ノート 12月
std::moveとstd::forward
- 関数テンプレートでは, 引数がT&&のときにX&&およびX&を与えることができる
- このとき, TはX&と推論され, &&は無視して結局X&となる
- そのせいでT&&(rvalue reference)特有の処理がそのままではできなくなる
- std::moveはT&をT&&にstatic_castする
- std::forwardはそのどちらか分からないT&&をキャストして元に戻す
- この関数を使うことでT&&を受け取る関数を呼び出せる
参照
//使ったことないので自信なし