Я думаю, что вы задаете не тот вопрос.
Сначала давайте рассмотрим угол категории значения.Результатом вызова вашего оператора является lvalue, если он возвращает T&
, prvalue, если он возвращает T
, и xvalue, если он возвращает T&&
( ref ).
Что вы действительно хотите знать, так это то, какой тип возвращает ваш оператор, учитывая использование того, что выглядит как универсальная ссылка.Тем не менее, это не универсальная ссылка.Аргумент функции типа T&&
будет универсальной ссылкой, но это не делает тип T&&
своего рода волшебным хамелеоном.Здесь вы возвращаете rvalue-ref-to- T
, точка.В соответствии с вышеизложенным, это приводит к xvalue (своего рода rvalue).
Теперь, когда мы знаем, что оператор делает то, что должен, как мы можем действовать по-другому?Это действительно зависит от того, что вы пытаетесь достичь, что не было полностью заявлено.Но вполне вероятно, что вы ищете std::move
или std::forward
.