c++ - Return local variable to const ref from lambda -
const tbigtype& = [](){ tbigtype result; // ... return result; }(); use(a); // const ref
is ok capture result in const ref this?
your lambda returns prvalue, call expression temporary object, lifetime extended because bound reference.
the situation entirely analogous following, simpler example:
int f() { return 12; } const int& = f();
here a
bound temporary object of type int
, value 12
.
if not specify return type of lambda, return type either void
or object type. if want lambda return lvalue or xvalue, explicitly need specify return type, e.g. -> int&
, -> auto&
, -> decltype(auto)
, etc.
Comments
Post a Comment