1

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?
  };
}
4

1 回答 1

1

尝试额外的大括号——你需要额外的一对array

my_struct_t var[] = { { 0, { { { 'a', 1 } } } }
                    , { 1, { { { 'c', 3 } } } }
};

//                  ^-  mystruct[]
//                     ^-  mystruct
//                         ^-  array
//                           ^-  elem_t[2]
//                             ^-  elem_t

大括号可以在顶层折叠,但这可能是不允许折叠的情况,或者编译器支持可能还不存在。

于 2013-02-22T14:24:24.057 回答