What is the design rationale behind allowing this
const Foo& a = function_returning_Foo_by_value();
but not this
Foo&am
I have understood the rationale as follows: a temporary is expected to be destroyed when it goes out of scope. If you promise not to modify it I will let you prolong its lifetime.