Инициализация скобок нетривиальной структуры приводит к неожиданному поведению ⇐ C++
Инициализация скобок нетривиальной структуры приводит к неожиданному поведению
В прикрепленном фрагменте я ожидал бы ::std::vector d = { {} }; что приведет к ошибке компилятора, поскольку B не может быть создан по умолчанию. Тогда, если ошибки нет, я ожидаю, что d.size(); быть 1. Это случай неожиданного поведения или я упускаю что-то само собой разумеющееся?
Заранее спасибо.
#include #include #include #include структура А {}; структура Б { Б(интервал) {}; }; структура С { А а; Б б; }; интервал основной() { ::std::vector d = { {} }; //хорошо?!?! //::std::vector d2 = { C() }; Ошибка //С с; Ошибка //d.push_back( {} ); Ошибка //d.push_back( { {}, { 3 } } ); Хорошо вернуть d.size(); // 0 вместо ожидаемого 1 }
В прикрепленном фрагменте я ожидал бы ::std::vector d = { {} }; что приведет к ошибке компилятора, поскольку B не может быть создан по умолчанию. Тогда, если ошибки нет, я ожидаю, что d.size(); быть 1. Это случай неожиданного поведения или я упускаю что-то само собой разумеющееся?
Заранее спасибо.
#include #include #include #include структура А {}; структура Б { Б(интервал) {}; }; структура С { А а; Б б; }; интервал основной() { ::std::vector d = { {} }; //хорошо?!?! //::std::vector d2 = { C() }; Ошибка //С с; Ошибка //d.push_back( {} ); Ошибка //d.push_back( { {}, { 3 } } ); Хорошо вернуть d.size(); // 0 вместо ожидаемого 1 }
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение