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追加のブレースを試してください。それ自体に追加のペアが 1 つ必要です。

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

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

中括弧は最上位で折りたたむことができますが、これは折りたたむことが許可されていない状況であるか、コンパイラのサポートがまだ存在しない可能性があります。

于 2013-02-22T14:24:24.057 に答える