私たちが知っているように、ほとんどの場合、T&&
「これは一時的なオブジェクトです」を意味します。ただし、関数から一時オブジェクトを返したい場合は、次のように関数を宣言できます。
template<class T>
T f()
{
T t;
......
return t;
}
または(注:正しくありません)
template<class T>
T&& f()
{
T t;
......
return t;
}
しかし、前者は十分で下位互換性があるため、後者はやり過ぎだと思います。
それでも、std::forward()
の戻り型がT &&として宣言されていることもわかっているので、これについての私の理解は不完全であると確信しています。
私の本当の質問は、関数の戻り型をいつどこでT&&として宣言する必要があるかということです。