Dlaczego nie można zainicjować prostego (z nawiasami klamrowymi) 2D std :: array? [duplikować]

Możliwy duplikat:
c ++ dlaczego zachowanie listy inicjalizującej dla std :: vector i std :: array jest różne

Zdefiniowałem prostą tablicę 2D (3X2):

  std::array<std::array<int,3>,2> a {
    {1,2,3},
    {4,5,6}
  };

Byłem zaskoczony, że ta inicjalizacja nie działa, z błędem gcc4.5:too many initializers for 'std::array<std::array<int, 3u>, 2u>'

Dlaczego nie mogę użyć tej składni?

Znalazłem obejścia, bardzo zabawne z dodatkowymi nawiasami, ale po prostu zastanawiam się, dlaczego pierwsze, najprostsze podejście nie jest poprawne?

Obejścia:

  // EXTRA BRACES
  std::array<std::array<int,3>,2> a {{
    {1,2,3},
    {4,5,6}
  }};

  // EXPLICIT CASTING
  std::array<std::array<int,3>,2> a {
    std::array<int,3>{1,2,3},
    std::array<int,3>{4,5,6}
  };

[AKTUALIZACJA]

Ok, dzięki KerrekSB i komentarzom dostaję różnicę. Wydaje się więc, że w moim przykładzie jest zbyt mało nawiasów klamrowych, jak w tym przykładzie C:

struct B {
  int array[3];
};
struct A {
  B array[2];
};

B b = {{1,2,3}};
A a = {{
     {{1,2,3}},
     {{4,5,6}}
}};

questionAnswers(1)

yourAnswerToTheQuestion