のは、以下の私が持っているとしましょう:初期化子リストのクラスメンバーを参照するのは未定義の動作ですか?
class A {
B member1;
C member2;
public:
A();
};
class B {
public:
C& ref_to_c;
B(C& ref_to_c);
};
class C {
...
};
BはCへの参照は、コンストラクタで提供されている必要があります。クラスAがCを提供する場合、それは言うことですその次...
A() : member1(B(member2)) {}
としてAの初期化子リストを指定することが合法である、member2は、初期化子リスト相に存在する、またはこの未定義の動作あるのでしょうか?
member1はメンバー2の前に初期化されています。私はUBについてはわかりませんが、何か間違いが起こると思います。 –
BTW、GCC 4.9.2はまったく文句を言わなかった –
@Galik 'member2'は一時的ではなく'B'は' member1'のために初期化され、コピーコンストラクタまたはムーブコンストラクタを呼び出します。ここで間違いはありません。 –