Почему ссылочные переменные rvalues ​​не являются rvalue?

Допустим, у меня есть две перегрузки функцииf. f(T&&) а такжеf(T&), Тогда в телеg: g(T&& t) { f(t);} перегрузкаf(T&) будет вызван, потому что т считается lvalue.

Это очень удивительно для меня. Как работает функция с подписьюf(T&&) не может соответствовать вызову с типомT&&? Что меня удивляет еще больше, так это то, что звонокf(static_cast<T&&>(t)) будет на самом деле вызвать перегрузку Rvaluef(T&&).

Какие правила C ++ делают это возможным? ЯвляетсяT&& больше, чем тип?

Ответы на вопрос(3)

Ваш ответ на вопрос