临时B()是否通过初始化参考int&扩展了它的生命周期。 ri在下面?

时间:2014-06-21 19:05:29

标签: c++ c++11 reference

此示例取自C ++ 11标准中的§8.5.3/ 5(第一个要点):

struct A { };
struct B : A { operator int&(); } b;
int& ri = B();

如果有,有没有办法在下面的代码中访问临时B()

#include <iostream>

struct A { };
struct B : A { int i; B(): i(10) {} operator int&() { return i; } } b;

int main()
{
    int& ri = B();
    std::cout << ri << '\n';
}

1 个答案:

答案 0 :(得分:3)

不,像往常一样,临时B对象的析构函数在完整表达式的末尾运行。它不受任何参考的约束。

在第二个示例中,ri是对生命周期已结束的int对象的引用。