namespace std {
template <class T>
typename remove_reference<T>::type&& move(T&& t) noexcept; // C++11
template <class T>
constexpr typename remove_reference<T>::type&& move(T&& t) noexcept; // C++14
}
概要
左辺値を右辺値にキャストする。
この関数は、渡されたオブジェクトを右辺値参照にキャストし、ムーブセマンティクスを適用させる。
戻り値
static_cast<typename std::remove_reference<T>::type &&>(t)
例外
投げない
例
出力
copy
move
上記のa1
の初期化において、a
は左辺値なので、コンストラクタA(const A&)
が呼び出され、a1
はa
からコピーされる。a2
の初期化においては、std::move(a)
呼び出しのため、コンストラクタA(A&&)
が呼ばれ、a2
はa
からムーブされる。
バージョン
言語
- C++11
処理系
- Clang: ??
- GCC: 4.6.1 ✅
- ICC: ??
- Visual C++: 2010 ✅, 2012 ✅, 2013 ✅, 2015 ✅