C ++: inicializador de constructor para matrices

Tengo un calambre cerebral ... ¿cómo inicializo una matriz de objetos correctamente en C ++?

Ejemplo sin matriz:

struct Foo { Foo(int x) { /* ... */  } };

struct Bar { 
     Foo foo;

     Bar() : foo(4) {}
};

ejemplo de matriz:

struct Foo { Foo(int x) { /* ... */  } };

struct Baz { 
     Foo foo[3];

     // ??? I know the following syntax is wrong, but what's correct?
     Baz() : foo[0](4), foo[1](5), foo[2](6) {}
};

editar: Se aprecian ideas locas y locas para solucionar el problema, pero no me ayudarán en mi caso. Estoy trabajando en un procesador integrado donde std :: vector y otras construcciones STL no están disponibles, y la solución obvia es hacer un constructor predeterminado y tener un explícitoinit() método que se puede llamar después del tiempo de construcción, para que no tenga que usar inicializadores en absoluto. (Este es uno de esos casos en los que Java me ha echado a perderfinal palabra clave + flexibilidad con constructores.)

Respuestas a la pregunta(14)

Su respuesta a la pregunta