// コピー
thread& operator=(const thread&) = delete;
// ムーブ
thread& operator=(thread&& x) noexcept;
概要
thread
オブジェクトはムーブ代入可能/コピー代入不可。
効果
ムーブ代入演算子呼び出し時点でthis
にスレッドが関連付けられている場合、std::terminate()
を呼び出してプログラムを異常終了する。そうでなければx
からthis
へのムーブ代入を行う。
事後条件
ムーブ前にx
と関連付けられていたスレッドはthis
に関連付けられる。ムーブ後のx
は何も指さない空のthread
オブジェクトとなる。
戻り値
*this
を返す。
例
#include <thread>
#include <cassert>
int main()
{
std::thread t1([]{ /*...*/ });
std::thread t2;
assert(t1.joinable() && !t2.joinable());
// t1からt2へムーブ代入
t2 = std::move(t1);
assert(!t1.joinable() && t2.joinable());
t2.join();
}
出力
バージョン
言語
- C++11
処理系
- Clang:
- GCC: 4.6.3 ✅, 4.7.0 ✅
- ICC:
- Visual C++: 2012 ✅, 2013 ✅, 2015 ✅