struct MyClass
{
std::array<int, 10> stdArr;
MyClass() : stdArr()
{}
};
MyClass c;
Вопросы:
- Является ли
c.stdArr
нулевым инициализированным? - Если да - почему?
Мои собственные противоречивые ответы:
-
Он инициализируется нулем:
std::array
хочет вести себя как c-массив. Если в моем примере вышеstdArr
был c-массив, он был бы нулевым инициализированstdArr()
в списке инициализации. Я ожидаю, что записьmember()
внутри списка инициализации инициализирует объект. -
Не инициализируется нулем:
-
std::array
обычно имеет один элемент, который в моем случаеint[10] _Elems;
- обычно основные типы и массивы основных типов, таких как
int[N]
, не инициализируются по умолчанию. -
std::array
- это тип агрегата, который подразумевает, что он сконфигурирован по умолчанию. - потому что нет настраиваемого конструктора, который инициализирует
_Elems
, я думаю, что он не инициализирован нулем.
-
Какое правильное поведение std::array
соответствует стандарту С++ 11?