【发布时间】:2012-11-03 08:22:53
【问题描述】:
此代码无法编译:
class C {};
void foo (C& c) {}
C bar() { return C(); }
int main()
{
foo(bar());
}
foo(bar()) 行中的编译错误 (GCC 4.1.2):
'C&' 类型的非常量引用的初始化无效 来自“C”类型的临时文件
由于bar() 返回一个mutable 对象,它应该编译...
为什么C++ 不允许上面的代码?
编辑:我已经在 an answer below 中总结了所有答案中的所有好主意 ;-)
【问题讨论】:
标签: c++ return-value rvalue-reference temporary-objects pass-by-rvalue-reference