23 Mar
2018
23 Mar
'18
4:40 p.m.
On Fri, Mar 23, 2018 at 12:01 PM, Peter Dimov via Boost
Andrzej Krzemienski wrote:
const auto& x = func0().value();
...
I am convinced that you are hitting an UB. Temporary returned by func0() is destroyed in the first line.
Interesting question. value() && returns T&&. The auto const& reference can't bind directly to T&&, because that's not an lvalue.
An lvalue-reference-to-const can bind to an rvalue (it's why you can pass an rvalue to a function that takes a "const T&"). -- -Matt Calabrese