Описание тега aggregate-initialization
Агрегатная инициализация - это функция C++, которая позволяет инициализировать массивы и агрегированные типы с использованием синтаксиса фигурных скобок.
2
ответа
Совокупная инициализация структуры с использованием собственных членов данных
Это n-й вопрос по этому поводу, но я не смог найти точную копию... Предположим, следующий код: #include <iostream> struct S { int x; int y; }; class C { public: S s; C() : s{123, s.x} {} }; int main() { std::cout << C().s.y << '\n'…
05 апр '17 в 14:28
2
ответа
Как заставить мой векторный класс поддерживать прямую инициализацию / присваивание
Мой вопрос, конечно, глуп, но в моем понимании C++11 и программирования шаблонов так много пробелов, что я не знаю, как к этому подойти. Я катлю свою собственную очень простую библиотеку линейной алгебры: typedef short index_t; template<int M, in…
14 окт '16 в 02:20
2
ответа
C++ - инициализация члена массива с агрегатной инициализацией
С этим кодом: struct Structure { int a; char b[4]; }; void function() { int a = 3; char b[] = {'a', 'b', 'c', 'd'}; } Могу ли я инициализировать Structure со значениями a а также b используя агрегатную инициализацию?Я старался Structure{a, b}Однако …
07 мар '17 в 17:25
1
ответ
Вызывают ли пустые скобки конструктор по умолчанию или конструктор, принимающий std::initializer_list?
Ниже приводится цитата из Effective Modern C++ (стр. 55): "Предположим, что вы используете пустой набор скобок для создания объекта, который поддерживает конструктор по умолчанию, а также поддерживает конструкцию std::initializer_list. Что означают …
07 июл '15 в 20:11
3
ответа
Почему я могу инициализировать обычный массив из {}, но не std::array
Это работает: int arr[10] = {}; Все элементы arr инициализируются значением в ноль. Почему это не работает: std::array<int, 10> arr({}); Я получаю следующее предупреждение от g++ (версия 4.8.2): предупреждение: отсутствует инициализатор для чл…
07 июл '15 в 14:48
4
ответа
Совокупная безопасность инициализации в C++
Предположим, у меня есть следующая структура: struct sampleData { int x; int y; }; И когда используется, я хочу инициализировать переменные sampleData введите в известное состояние. sampleData sample = { 1, 2 } Позже я решаю, что мне нужны дополните…
08 июн '11 в 20:00
1
ответ
Агрегированная инициализация класса, который в частном порядке наследует агрегатный класс в C++11
Рассмотрим следующий код: struct base { int x, y, z; }; struct derived : private base { using base::base; }; int main(int argc, const char *argv[]) { base b{1, 2, 3}; // Allowed derived d{1, 2, 3}; // Not allowed } Линия derived d{1, 2, 3}; заставля…
06 авг '13 в 03:27
0
ответов
Инициализация частного агрегата
Можно ли определить как private агрегатная инициализация для агрегатного класса? Мне бы хотелось, чтобы этот класс мог быть агрегирован-инициализирован только своими статическими закрытыми членами. Пример: struct Size { const unsigned int width; con…
04 мар '16 в 10:02
1
ответ
Инициализировать агрегатный элемент в общем коде шаблона
Например, template <typename T> struct node { T data; node* pnext; }; template <typename T, typename... Us> void func(Us&&... args) { // Initialize a node<T> with data initialized from args... } Пути, которые я могу придума…
23 фев '18 в 09:03
0
ответов
Принудительное удаление скобок в вызове функций Variadic
У меня есть два POD struct A { float x; float y; }; struct B { A a; int i; } и переменная функция, которая на месте назначает POD, используя (что я думаю, это) агрегат template<typename T, class... Args> void remake(T* location, Args&&…
22 окт '17 в 16:22
8
ответов
Сужающие преобразования в C++0x. Это только я, или это звучит как прорыв?
C++0x сделает следующий код и подобный код плохо сформированным, потому что он требует так называемого сужающего преобразования double к int, int a[] = { 1.0 }; Мне интересно, используется ли этот тип инициализации в коде реального мира. Сколько код…
13 дек '10 в 22:33
1
ответ
С ++17 Агрегированные инициализации
Я смотрю сериал на youtube от Jason Tuner, и на этом конкретном видео, найденном здесь: Aggregate Initializations, он начинает с использования clang ++ C++03, а затем меняет компилятор на clang ++ C++ 11, а затем, когда он включает иерархию базовых …
13 фев '17 в 15:02
1
ответ
Инициализация std::array<>
Рассмотрим следующий код: #include <array> struct A { int a; int b; }; static std::array<A, 4> x1 = { { 1, 2 }, { 3, 4 }, { 5, 6 }, { 7, 8 } }; static std::array<A, 4> x2 = { { { 1, 2 }, { 3, 4 }, { 5, 6 }, { 7, 8 } } }; static std…
16 июл '15 в 09:06
0
ответов
Тип POD с конструкторами, но без агрегированной инициализации
Я запутался о типах POD в C++, у меня есть эти struct HSVа также struct RGB который представляет собой совокупность значений для построения цвета: struct HSV { int hue; int saturation; int value; }; struct RGB { // RGB(void) = default; // RGB(HSV co…
30 мар '16 в 13:10
0
ответов
Тип черт для агрегатов
В соответствии с 8.5.1/1 рабочего проекта, агрегат представляет собой массив или класс без предоставленных пользователем конструкторов, без закрытых или защищенных нестатических элементов данных, без базовых классов и без виртуальных функций. Есть л…
27 июн '16 в 15:14
1
ответ
При инициализации структуры с синтаксисом ={}, что происходит внутри?
Немногоотредактировал пример на основе комментариев Небольшой код, а затем вопрос (просто чтобы уточнить, это вопрос C++): #include <cstdio> struct MYSTRUCT1 { int asdf[4]; } MyStruct1; struct MYSTRUCT2 { int asdf[4]; MYSTRUCT2() : asdf() {} }…
11 апр '13 в 16:35
2
ответа
Агрегатная инициализация производного класса std::array
Я делаю небольшой вспомогательный класс, который происходит от std::array, Конструктор, очевидно, не наследует, и именно он отвечает за инициализацию скобок; например: template<typename T, size_t size> struct foo : std::array<T,size> { f…
13 авг '18 в 11:18
1
ответ
Должен ли я беспокоиться о инициализаторах Wmissing-field и агрегатной инициализации в C++17?
Я скомпилировал код с GCC с -Wall а также -Wextra включен. Этот код выдает предупреждение: struct A { A(int) {} }; struct B {}; struct C : A, B {}; int main() { (void) C{1}; } main.cpp: In function 'int main()': main.cpp:11:15: warning: missing init…
10 дек '17 в 05:51
1
ответ
C++11 initializer_list не работает для буквального значения константы встроенного объекта?
У меня есть простая программа на C++ 11: struct A{ int i; struct B{ int i; int j; }; } a = {2, {3, 4}}; g ++ - 7 компилируется и выдает ошибку: error: too many initializers for 'A' }a={2,{3,4}}; ^ Мне просто интересно, как я могу объявить объект A с…
06 фев '19 в 00:54
2
ответа
Как инициализировать boost::array с пользовательской структурой?
Я ищу хорошее решение, как инициализировать статический boost::array с пользовательской структурой пользователя и данными. Мой пример, что я ожидаю от boost::arrayниже: struct Foo { std::string a; std::string b; }; static boost::array< Foo, 2 >…
04 фев '13 в 10:25