forked from TartanLlama/optional
This makes sense. The 'optional' is an rvalue, but its contained type
remains an lvalue reference. I.e.
int i = 3;
optional<int&>{i}.and_then([](int& r){return optional<int&>{++r});
The optional r-value still refers to 'i', which is not an r-value.