What is the design rationale behind allowing this
const Foo& a = function_returning_Foo_by_value();
but not this
Foo& a = function_returning_Foo_by_value();
?
What could possible go wrong in the second line (which would not already go wrong in the first line)?