Вопросы по теме 'uniform-initialization'
Единая инициализация ссылок
В настоящее время я пытаюсь понять новую единую инициализацию С++ 0x. К сожалению, я споткнулся об использование унифицированной инициализации ссылок. Пример:
int main() {
int a;
int &ref{a};
}
Этот пример отлично работает:
%...
1914 просмотров
schedule
16.08.2022
Унифицированный инициализатор, используемый в аргументе по умолчанию для ссылки на константу
Является ли этот допустимый синтаксис С++ 0x?
class A
{
public:
void some_function( const std::set<std::string> &options = {} );
// note that this is legal, which binds the const reference to a temporary:
void some_function(...
541 просмотров
schedule
28.06.2022
Странность униформной инициализации C++0x
Как и многие, я в восторге от C++0x . Я стараюсь изучать и использовать новые функции в новых проектах, чтобы писать лучший и самый простой в обслуживании код.
Излишне говорить, что мне нравится идея новых инициализаторов. Итак, я смотрю на них,...
2323 просмотров
schedule
27.07.2023
Равномерная инициализация производного класса с тривиальным ctor
Я пытаюсь обдумать некоторые угловые случаи с униформной инициализацией С++ 11, и я не могу понять, почему это так:
struct Base
{
int x,y,z;
};
struct Derived : Base
{
};
static_assert (std::is_trivial<Base>::value, "Base must be...
1491 просмотров
schedule
22.03.2024
Ошибка «Избыточные элементы в инициализаторе структуры» с униформной инициализацией С++ 11
Я удивлен следующей ошибкой компилятора:
template <typename T>
struct A
{
A(T t): t_{t} {}
T t_;
};
struct S
{
};
int main()
{
A<S> s{S{}};
}
Ошибка (с лязгом):
test.cpp:4:16: error: excess elements in struct...
4386 просмотров
schedule
24.02.2024
Не удается запустить конструктор перемещения
С++ 11
У меня проблемы с использованием конструктора перемещения. У меня есть простой класс-контейнер с именем Number , единственным элементом данных которого является целое число. У меня есть следующий код:
//Number.h
#ifndef NUMBER_H...
150 просмотров
schedule
09.10.2022
Почему единый синтаксис инициализации применяется только для объектов?
В С++ 11 у нас есть хороший унифицированный синтаксис инициализации объектов. Почему он не распространяется и на инициализацию необъектных типов?
Есть ли в этом какая-то синтаксическая двусмысленность, или это просто какой-то глупый вопрос,...
221 просмотров
schedule
10.11.2022
в С++ 11, можете ли вы всегда (безопасно) заменить инициализацию memset() пустым инициализатором?
Я часто сталкиваюсь со структурами POD в коде, которые вручную инициализируются нулями с помощью memset , например так:
struct foo;
memset(&foo, 0, sizeof(foo));
Я проверил стандарт C++11, и он говорит: "Объект, инициализатором которого...
4880 просмотров
schedule
12.08.2022
Унифицированная инициализация и аргументы конструктора по умолчанию в C++11
Я узнаю о новой функции С++ 11 - унифицированной инициализации. Написал небольшую программу:
#include <iostream>
using namespace std;
class C {
public:
C(int a = 1, int b = 2) : a_{a}, b_{b}, n{0,1,2,3,4} {};
int n[5];
int...
1474 просмотров
schedule
18.04.2024
Инициализация фигурных скобок конструктора копирования
«мы можем инициализировать объекты класса, для которых мы не определили никакого конструктора, используя:
почленная инициализация.
копировать инициализацию.
инициализация по умолчанию.
Например:
struct Work {...
3276 просмотров
schedule
27.06.2023
Как инициализировать переменную-член вектора в определении класса?
Следующий код компилируется OK с использованием XCode 5.0, но не Visual Studio 2013.
#include <vector>
class VectorInit
{
private:
std::vector<int> m_vector{1, 2, 3}; // fails to compile using VS 2013
};
int main()
{...
8029 просмотров
schedule
10.08.2022
Инициализация члена ссылки const с помощью удаленного конструктора копирования
Этот код с членом const A& a в B , где A имеет удаленный конструктор копирования, не компилируется в GCC 4.8.1, но работает нормально в clang 3.4:
class A {
public:
A() = default;
A(const A&) = delete;
A&...
1324 просмотров
schedule
04.06.2022
std::string(count, ch) не вызывается при использовании юниформ-инициализации
Меня только что поймала эта, казалось бы, невинная попытка вызвать конструктор std::string который принимает размер и символьное значение, используя унифицированный синтаксис инициализации:
std::string s{ 10, '\0' };
Я думал, что это...
72 просмотров
schedule
24.06.2023
Единая инициализация С++ 14 для структур
У меня есть следующий довольно простой код:
WNDCLASSEX windowClass = {0};
windowClass.cbSize { sizeof(WNDCLASSEX) };
Я хотел бы знать, почему приведенный выше код не работает, а приведенный ниже код работает:
WNDCLASSEX...
317 просмотров
schedule
15.09.2022
Почему при инициализации списка C++ также учитываются обычные конструкторы?
В C++ при использовании синтаксиса initializer_list для инициализации объекта обычные конструкторы объекта также участвуют в разрешении перегрузки, когда не применяется никакое другое правило инициализации списка. Насколько я понимаю, следующий код...
389 просмотров
schedule
20.06.2023
Почему инициализация скобок C++ не поддерживается для агрегатов с закрытыми членами?
По моему мнению, следующее концептуально не нарушает конфиденциальность. Но это запрещено.
struct A
{
int a;
int b;
int c;
};
struct B
{
int a;
int b;
private:
int c;
};
int main (int argc, char *...
631 просмотров
schedule
31.08.2022
Не удалось преобразовать список инициализаторов, заключенных в фигурные скобки, в стандартный кортеж.
В рамках более крупного проекта я играю с std::tuple и шаблонами; рассмотрим следующий код:
template <typename ...T> void foo(tuple<T...> t) {}
void bar(tuple<int, char> t) {}
tuple<int, char> quxx() { return {1, 'S'};...
7752 просмотров
schedule
27.05.2022
Единая инициализация кортежем
Сегодня я столкнулся с ситуацией, когда у меня есть вектор кортежей, где кортежи могут содержать несколько записей. Теперь я хотел преобразовать свой вектор кортежей в вектор объектов, чтобы записи кортежей точно соответствовали юниформ-инициализации...
817 просмотров
schedule
09.05.2023
Понимание универсальной и универсальной инициализации в C++
Я работаю над книгой по С++, чтобы научить себя. В книге, над которой я работаю, рассказывается об сужении с помощью преобразования типов. В нем объясняется, как число double может быть сужено до int, и говорится: «Что делать, если вы считаете, что...
92 просмотров
schedule
29.08.2022