Nel seguente snippet di codice l'inizializzatore di d1 è passato d2 che non è ancora stato costruito (corretto?), Quindi il d.j nel costruttore di copie di D è un accesso di memoria non inizializzato?L'ordine di inizializzazione è garantito dallo standard?
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) {}
};
Quale sezione dello standard C++ discute l'ordine di inizializzazione dei membri dei dati?
Relativo anche se non duplicato domanda: http://stackoverflow.com/questions/1589950/initializer-list-argument-valutazione-ordinazione –