Я не понимаю, почему следующий код компилируется в GCC 8.0:
decltype(auto) foo(int&& r) {
return r;
}
В foo
тип объявления r
равен int&&
, поэтому возвращаемый тип foo
также int&&
. Но r
сам является lvalue, а lvalue не может связываться с ссылкой rvalue.
Я что-то пропустил?