最終更新日時: 2026年07月22日 16時08分23秒 (JST)
rotarymars が更新

履歴 編集

function
<thread>

# std::thread::operator=(C++11)

    // コピー
    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>
    #include <utility>

    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 ✅

## 参照