日記

内容の正しさは保証しません

ノート 12月

std::moveとstd::forward

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

参照

本の虫: rvalue reference 完全解説

//使ったことないので自信なし