Warum kann 2D std :: array nicht einfach (mit geschweiften Klammern) initialisiert werden? [Duplikat]

Mögliche Duplikate:
c ++ warum das Verhalten von initializer_list für std :: vector und std :: array unterschiedlich ist

Ich habe ein einfaches 2D-Array (3X2) definiert:

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

Ich war überrascht, dass diese Initialisierung mit gcc4.5-Fehler nicht funktioniert:too many initializers for 'std::array<std::array<int, 3u>, 2u>'

Warum kann ich diese Syntax nicht verwenden?

Ich fand Problemumgehungen, eine davon sehr lustig mit zusätzlichen Klammern, aber frage mich nur, warum der erste, einfachste Ansatz nicht gültig ist.

Problemumgehungen:

  // 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}
  };

[AKTUALISIEREN]

Ok, dank KerrekSB und Kommentaren verstehe ich den Unterschied. In meinem Beispiel scheint es also zu wenig geschweifte Klammern zu geben, wie in diesem C-Beispiel:

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

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

Antworten auf die Frage(1)

Ihre Antwort auf die Frage