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

时间:2016-11-10 16:38:03

标签: c++ lambda const-reference

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

use(a); // by const ref

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

1 个答案:

答案 0 :(得分:4)

您的lambda返回一个prvalue,因此调用表达式是一个临时对象,其生命周期被扩展,因为它绑定到引用。

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

int f() { return 12; }

const int& a = f();

此处a绑定到int类型和值12的临时对象。

如果未指定lambda的返回类型,则返回类型始终为void或对象类型。如果您希望lambda返回左值或x值,则需要明确指定返回类型,例如:作为-> int&-> auto&-> decltype(auto)