¿Por qué no se puede inicializar (con llaves) 2D std :: array? [duplicar]

Posible duplicado:
c ++ por qué el comportamiento de initializer_list para std :: vector y std :: array son diferentes

Definí matriz 2D simple (3X2):

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

Me sorprendió que esta inicialización no funcione, con el error gcc4.5:too many initializers for 'std::array<std::array<int, 3u>, 2u>'

¿Por qué no puedo usar esta sintaxis?

Encontré soluciones, una muy divertida con aparatos adicionales, pero me pregunto por qué el primer enfoque más fácil no es válido.

Soluciones:

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

[ACTUALIZAR]

Ok, gracias a KerrekSB y los comentarios me dan la diferencia. Así que parece que hay muy pocas llaves en mi ejemplo, como en este ejemplo C:

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

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

Respuestas a la pregunta(1)

Su respuesta a la pregunta