関数std::move()
は次のように定義されます
template<typename T>
typename std::remove_reference<T>::type&& move(T && t)
{
return static_cast<typename std::remove_reference<T>::type&&>( t );
}
移動コンストラクターが呼び出されることを想像できる場所は4つあります。
- パラメータが渡されたとき。
- キャストが行われたとき。
- 結果が返されたとき。
- 関数自体ではなく
std::move()
、返される参照が最終的に到着する場所にある可能性があります。
4番に賭けますが、100%確信が持てないので、答えを説明してください。