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 中捕获结果吗?
你的 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),等。