考慮以下聲明:std :: array的內聯初始化有什麼問題?
#include <array>
struct X
{
//std::array<bool,3> arr={false,false,false};
bool brr[3]={false,false,false};
};
AS是,它由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}};
爲什麼我不能用在結構定義單一括號中的簡單的初始化?
注意,在C++ 11相對於C++ 14具有類初始化[使支撐一個非集合](http://stackoverflow.com/q/27118535/1708801)。 –