3
const TBigType& a = [](){
TBigType result;
// ...
return result;
}();
use(a); // by const ref
可以像這樣在const ref中捕獲結果嗎?返回局部變量來自lambda的const ref
const TBigType& a = [](){
TBigType result;
// ...
return result;
}();
use(a); // by const ref
可以像這樣在const ref中捕獲結果嗎?返回局部變量來自lambda的const ref
您的lambda返回一個prvalue,所以調用表達式是一個臨時對象,它的生存期由於綁定到引用而延長。
的情況是完全類似於下文中,更簡單的例子:
int f() { return 12; }
const int& a = f();
這裏a
勢必int
類型和值12
的臨時對象。
如果您未指定lambda的返回類型,則返回類型始終爲void
或對象類型。如果您希望您的lambda返回左值或xvalue,則您將顯式指定返回類型,例如如-> int&
,-> auto&
,-> decltype(auto)
等
但是如果可能的話給'TBigType'移動構造函數會更好。 –
@LightnessRacesinOrbit:Meh。無論如何,它將被複制無效。 –
我寧願完全確定。 Pre-C++ 17,這是一個移動構造函數。 –