最終更新日時:
が更新

履歴 編集

function
<thread>

std::jthread::operator=(C++20)

jthread& operator=(const jthread&) = delete; // (1) C++20
jthread& operator=(jthread&& x) noexcept;    // (2) C++20

概要

jthreadオブジェクトの代入。

  • (1) : コピー代入。コピー不可
  • (2) : ムーブ代入。ムーブ不可

効果

  • &x == this(自己代入)の場合、効果はない
  • それ以外の場合、以下を行う

事後条件

  • get_id()の呼び出しでは、代入前のx.get_id()が返されるようになること
  • メンバ変数として保持しているstd::stop_source型オブジェクトssourceは、代入前のx.ssourceの値を持つこと

戻り値

*thisを返す。

#include <thread>
#include <cassert>
#include <utility>

int main()
{
  std::jthread jt1([]{ /*...*/ });
  std::jthread jt2;
  assert(jt1.joinable() && !jt2.joinable());

  // jt1からjt2へムーブ代入
  jt2 = std::move(jt1);
  assert(!jt1.joinable() && jt2.joinable());

  jt2.join();
}

出力

バージョン

言語

  • C++20

処理系

参照