Как мы знаем, в большинстве распространенных случаев T&&
означает "это временный объект". Однако, если кто-то хочет вернуть временный объект из функции, он может объявить функцию следующим образом:
template<class T>
T f()
{
T t;
......
return t;
}
или (Примечание: Неправильно)
template<class T>
T&& f()
{
T t;
......
return t;
}
Но я думаю, что последнее слишком много, потому что первое достаточно и обратно совместимо.
Тем не менее, я также обнаружил, что тип возврата std::forward()
объявлен как T & &, поэтому я уверен, что мое понимание об этом неполно.
Мой настоящий вопрос: когда и где мы должны объявлять возвращаемый тип функции как T & &?