Skip to content

Latest commit

 

History

History
67 lines (50 loc) · 1.68 KB

File metadata and controls

67 lines (50 loc) · 1.68 KB

operator=

  • thread[meta header]
  • std[meta namespace]
  • jthread[meta class]
  • function[meta id-type]
  • cpp20[meta cpp]
jthread& operator=(const jthread&) = delete; // (1) C++20
jthread& operator=(jthread&& x) noexcept;    // (2) C++20

概要

jthreadオブジェクトの代入。

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

効果

  • joinable()trueを返す場合、request_stop()join()を呼び出す
  • xの状態を*thisに代入し、xをデフォルト構築された状態に設定する

事後条件

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

戻り値

*thisを返す。

#include <thread>
#include <cassert>

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

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

  t2.join();
}
  • t2 = std::move(t1);[color ff0000]
  • joinable()[link joinable.md]

出力

バージョン

言語

  • C++20

処理系