通过函数转发const引用

时间:2014-11-20 00:08:10

标签: c++

我只是想知道,是否遵循错误定义的代码:

const int& foo(const int& a)
{
  return a;
}

int main()
{
  const int& b = foo(5);
  // some actions with b...
}

当我们通过函数返回对rvalue的const引用时,这些动作是否定义良好?

1 个答案:

答案 0 :(得分:4)

在函数调用结束后,您将返回对超出范围的临时值的引用。

这不是一个好主意,并且在调用后使用引用调用Undefined Behaviour


如果您希望在绑定到const引用规则时将临时工作的生命周期扩展保存到此处,请记住此可用于iff 临时 直接绑定到引用:

const int& a = 5;
b = foo(a); // would be fine