将局部变量从 lambda 返回到 const ref

vla*_*don 3 c++ lambda const-reference

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

use(a); // by const ref
Run Code Online (Sandbox Code Playgroud)

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

Ker*_* SB 5

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

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

int f() { return 12; }

const int& a = f();
Run Code Online (Sandbox Code Playgroud)

这里a绑定了一个类型int和值的临时对象12

如果不指定 lambda 的返回类型,则返回类型始终为void或 对象类型。如果你希望你的拉姆达返回左值或x值,你将明确需要指定返回类型,例如,如-> int&-> auto&-> decltype(auto),等。