Return 从 lambda 到 const ref 的局部变量

Return local variable to const ref from lambda

const TBigType& a = [](){
    TBigType result;
    // ...
    return result;
}();

use(a); // by const ref

像这样在 const ref 中捕获结果可以吗?

你的 lambda return 是一个纯右值,所以调用表达式是一个临时对象,它的生命周期被延长了,因为它绑定到一个引用。

情况完全类似于以下更简单的示例:

int f() { return 12; }

const int& a = f();

此处 a 绑定到类型 int 和值 12 的临时对象。

如果不指定 lambda 的 return 类型,则 return 类型始终是 void 或对象类型。如果您希望您的 lambda 为 return 左值或 xvalue,您将明确需要指定 return 类型,例如如 -> int&-> auto&-> decltype(auto)