我只是想知道,是否遵循错误定义的代码:
const int& foo(const int& a)
{
return a;
}
int main()
{
const int& b = foo(5);
// some actions with b...
}
当我们通过函数返回对rvalue的const引用时,这些动作是否定义良好?
答案 0 :(得分:4)
在函数调用结束后,您将返回对超出范围的临时值的引用。
这不是一个好主意,并且在调用后使用引用调用Undefined Behaviour
如果您希望在绑定到const引用规则时将临时工作的生命周期扩展保存到此处,请记住此仅可用于iff 临时 直接绑定到引用:
const int& a = 5;
b = foo(a); // would be fine