Какое обоснование дизайна стоит за разрешением этого
const Foo& a = function_returning_Foo_by_value();
, но не этого
Foo& a = function_returning_Foo_by_value();
?
Что могло пойти не так во второй строке (которая уже не пошла бы неправильно в первая строка)?