考虑以下声明:
#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>’
然而,在 main()
函数中,这个声明可以无问题地工作。此外,以下初始化也可以在 struct X
中工作:
std::array<bool,3> arr={{false,false,false}};
为什么在结构定义中不能使用单括号进行简单初始化?