d1の初期化子がまだ構築されていないd2(正しい?)に渡されるので、Dのコピーコンストラクタのd.jは初期化されていないメモリアクセスですか?初期化の順序は標準によって保証されていますか?
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) {}
};
データメンバーの初期化の順序については、どのセクションで説明していますか?
関連はありません質問:http://stackoverflow.com/questions/1589950/initializer-list-argument-evaluation-order –