const TBigType& a = [](){
TBigType result;
// ...
return result;
}();
use(a); // by const ref
这样可以在const ref中捕获结果吗?
最佳答案
您的lambda返回一个prvalue,因此调用表达式是一个临时对象,由于绑定(bind)到引用,因此其生命期得以延长。
这种情况完全类似于以下更简单的示例:
int f() { return 12; }
const int& a = f();
此处
a
绑定(bind)到类型为int
和值为12
的临时对象。如果未指定lambda的返回类型,则返回类型始终为
void
或对象类型。如果您希望lambda返回左值或x值,则需要明确指定返回类型,例如如-> int&
,-> auto&
,-> decltype(auto)
等。关于c++ - 从lambda返回局部变量到const ref,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40532704/