此处提出了类似的问题,但没有得到正确的答案。
以下是否合法?
struct B;
struct A
{
A(B& b) : b(b)
{
}
B& b;
};
struct B
{
B(A& a) : a(a)
{
}
A& a;
};
struct C
{
C() : a(b), b(a)
{
}
A a;
B b;
};
我想知道它是否低于 3.8 (6) (C++ 2003)
... 在对象的生命周期开始之前但在分配对象将占用的存储空间之后,或者在对象的生命周期结束之后并且在重用或释放对象占用的存储空间之前,引用的任何左值可以使用原始对象,但只能以有限的方式使用。这样的左值指的是分配的存储(3.7.3.2),并且使用不依赖于其值的左值的属性是明确定义的。