比方说,我有以下几点:在初始化列表中引用类成员是否是未定义的行为?
class A {
B member1;
C member2;
public:
A();
};
class B {
public:
C& ref_to_c;
B(C& ref_to_c);
};
class C {
...
};
B要求,要下的参考它的构造函数中提供。如果类A提供C,是合法的,指定的初始化器列表,下面...
A() : member1(B(member2)) {}
也就是说,不member2在初始化器列表相存在,或者是这个不确定的行为?
member1在成员2之前初始化..我不确定UB,但我认为会发生错误 –
顺便说一下,GCC 4.9.2根本没有抱怨 –
@Galik'member2'不是临时的,临时的'B'初始化为'member1',并调用复制构造函数或移动构造函数,这里没有错。 –