【发布时间】:2014-11-11 21:33:54
【问题描述】:
假设我有以下:
class foo
{
public:
foo& Ref() { return *this; }
int stuff;
};
void do_stuff(foo& f)
{
f.stuff = 1;
}
int main()
{
do_stuff(foo().Ref());
}
我正在通过左值引用修改右值。这合法吗?如果是或不是,有人可以解释原因并在标准中提供相关部分吗?
【问题讨论】:
-
由于您在临时不存在后使用对临时的引用,因此行为未定义。
-
我已经更新了我的示例,希望能解决生命周期问题。终生问题不是故意的。
标签: c++