const TBigType& a = [](){
TBigType result;
// ...
return result;
}();
use(a); // by const ref
可以像这样在 const ref 中捕获结果吗?
const TBigType& a = [](){
TBigType result;
// ...
return result;
}();
use(a); // by const ref
可以像这样在 const ref 中捕获结果吗?
您的 lambda 返回一个纯右值,因此调用表达式是一个临时对象,它的生命周期被延长,因为它绑定到一个引用。
这种情况完全类似于以下更简单的示例:
int f() { return 12; }
const int& a = f();
Herea
绑定到 typeint
和 value的临时对象12
。
如果不指定 lambda 的返回类型,则返回类型始终为要么void
或对象类型。如果您希望您的 lambda 返回左值或 xvalue,则需要明确指定返回类型,例如 as -> int&
、-> auto&
、-> decltype(auto)
等。