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/

10-11 23:15
查看更多