Рассмотрим следующее выражение:
#include <array>
struct X
{
//std::array<bool,3> arr={false,false,false};
bool brr[3]={false,false,false};
};
Как есть, он обычно компилируется g++ 5.2. Но если я раскомментирую std::array
, я получаю сообщение об ошибке:
test.cpp:5:46: error: array must be initialized with a brace-enclosed initializer
std::array<bool,3> arr={false,false,false};
^
test.cpp:5:46: error: too many initializers for ‘std::array<bool, 3u>’
OTOH, эта декларация работает без проблем внутри main()
. Кроме того, следующая инициализация работает внутри struct X
:
std::array<bool,3> arr={{false,false,false}};
Почему я не могу использовать простую инициализацию с единственными фигурными скобками в определении структуры?