通过函数转发常量引用

forward const reference through function

本文关键字:常量 引用 转发 函数      更新时间:2023-10-16

我只是想知道,以下代码是否定义不明确:

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

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

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

这不是一个好主意,在调用后使用引用会调用未定义的行为


如果您半希望临时的生命周期延长,当绑定到常量引用规则以保存在此处时,请记住,这仅在临时直接绑定到引用时才有效:

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