【发布时间】:2012-07-05 06:06:33
【问题描述】:
简短的问题,以下可以吗:
struct X
{
A& x;
A y;
X() : x(y) {}
};
在结构中颠倒两个成员的顺序肯定没问题,因为它保证y首先被初始化,但这是否有效或调用UB?
此外,以下是否可以:
struct X
{
X& x;
X() : x(*this) {}
};
?
【问题讨论】:
-
问:你尝试的时候发生了什么?
-
@paulsm4:这有什么关系?他问这是否是未定义的行为。即使未定义,该效果仍然可以在特定编译器上“起作用”。
-
颠倒结构中两个成员的顺序绝对没问题,因为它保证 y 首先被初始化 ...仅当
A不是 POD 时才成立类。