En el siguiente fragmento de código, el inicializador de d1 se pasa d2 que aún no se ha construido (¿correcto?), ¿Es el d.j en el constructor de copias de D un acceso de memoria no inicializado?¿El orden de inicialización está garantizado por la norma?
struct D
{
int j;
D(const D& d) { j = d.j; }
D(int i) { j = i; }
};
struct A
{
D d1, d2;
A() : d2(2), d1(d2) {}
};
¿Qué sección de C++ estándar discute el orden de inicialización de los miembros de datos?
Pregunta relacionada aunque no duplicada: http://stackoverflow.com/questions/1589950/initializer-list-argument-evaluation-order –