Вопросы по теме 'uniform-initialization'

Единая инициализация ссылок
В настоящее время я пытаюсь понять новую единую инициализацию С++ 0x. К сожалению, я споткнулся об использование унифицированной инициализации ссылок. Пример: int main() { int a; int &ref{a}; } Этот пример отлично работает: %...
1914 просмотров

Унифицированный инициализатор, используемый в аргументе по умолчанию для ссылки на константу
Является ли этот допустимый синтаксис С++ 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 просмотров

Ошибка «Избыточные элементы в инициализаторе структуры» с униформной инициализацией С++ 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 просмотров

Не удается запустить конструктор перемещения
С++ 11 У меня проблемы с использованием конструктора перемещения. У меня есть простой класс-контейнер с именем Number , единственным элементом данных которого является целое число. У меня есть следующий код: //Number.h #ifndef NUMBER_H...
150 просмотров

Почему единый синтаксис инициализации применяется только для объектов?
В С++ 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 просмотров

Как инициализировать переменную-член вектора в определении класса?
Следующий код компилируется 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 просмотров

Инициализация члена ссылки const с помощью удаленного конструктора копирования
Этот код с членом const A& a в B , где A имеет удаленный конструктор копирования, не компилируется в GCC 4.8.1, но работает нормально в clang 3.4: class A { public: A() = default; A(const A&) = delete; A&...
1324 просмотров

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 просмотров

Почему при инициализации списка 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 просмотров

Не удалось преобразовать список инициализаторов, заключенных в фигурные скобки, в стандартный кортеж.
В рамках более крупного проекта я играю с std::tuple и шаблонами; рассмотрим следующий код: template <typename ...T> void foo(tuple<T...> t) {} void bar(tuple<int, char> t) {} tuple<int, char> quxx() { return {1, 'S'};...
7752 просмотров

Единая инициализация кортежем
Сегодня я столкнулся с ситуацией, когда у меня есть вектор кортежей, где кортежи могут содержать несколько записей. Теперь я хотел преобразовать свой вектор кортежей в вектор объектов, чтобы записи кортежей точно соответствовали юниформ-инициализации...
817 просмотров

Понимание универсальной и универсальной инициализации в C++
Я работаю над книгой по С++, чтобы научить себя. В книге, над которой я работаю, рассказывается об сужении с помощью преобразования типов. В нем объясняется, как число double может быть сужено до int, и говорится: «Что делать, если вы считаете, что...
92 просмотров