Ответ 1
Правила return-as-rvalue изменились в ответ на обзор перед публикацией С++ 14. Это изменение было добавлено в конце процесса и зафиксировано CWG Issue 1579, которое вносит изменения в 12.8/32 с формулировкой:
или когда выражение в выражении
return
является (возможно, в скобках) id-выражением, которое называет объект с автоматическим временем хранения, объявленным в теле
Это означает, что возврат любой локальной переменной теперь рассматривает объект, назначенный этой переменной, как если бы это было сначала rvalue (повторное попытку, если сбой при перегрузке завершен).
Поскольку проблема CWG была принята как дефект в языке, компиляторы могут реализовать это новое правило даже в режиме "С++ 11". Точка дефекта заключается в том, что "это всегда предназначалось для работы таким образом", поэтому это не является строго выражением изменений между С++ 11 и С++ 14, а, скорее, значение С++ 11 было изменено в 2014 году.