std :: array支持聚合初始化,但这里有什么问题?如果使用代码(1),则vc10.0和g ++ 4.7.2都会抱怨初始化程序太多。但是,如果我使用代码(2),一切都很好。
#include <array>
struct elem_t { char c; unsigned n;};
struct my_struct_t
{
int i;
// std::array<elem_t, 2> a; // (1) cause error
// elem_t a[2]; // (2) ok
};
int main()
{
std::array<int, 3> ai[] = {{1,2,3},{4,5,6}}; // ok
my_struct_t var[] =
{
{ 0, { {'a',1U}, {'b',2U}} }, // in question?
};
}
答案 0 :(得分:1)
尝试额外的大括号 - array
本身需要一对额外的大括号:
my_struct_t var[] = { { 0, { { { 'a', 1 } } } }
, { 1, { { { 'c', 3 } } } }
};
// ^- mystruct[]
// ^- mystruct
// ^- array
// ^- elem_t[2]
// ^- elem_t
大括号可以在顶层折叠,但这可能是不允许折叠的情况,或者编译器支持可能还没有。