最終更新日時(UTC):
が更新

履歴 編集

class template
<stop_token>

std::stop_callback(C++20)

namespace std {
  template<class Callback>
  class stop_callback;
}

概要

stop_callbackクラステンプレートは、停止要求が作成された際に呼び出されるコールバックを表す。

メンバ関数

名前 説明 対応バージョン
(constructor) コンストラクタ C++20
(destructor) デストラクタ C++20
operator=(const stop_callback&) = delete; 代入演算子 C++20
operator=(stop_callback&&) = delete; 代入演算子 C++20

メンバ型

名前 説明 対応バージョン
callback_type テンプレート引数Callbackに指定した型 C++20

推論補助

名前 説明 対応バージョン
(deduction_guide) クラステンプレートの推論補助 C++20

適格要件

テンプレート引数のCallbackinvocabledestructible制約を満たさなければならい。

事前条件

テンプレート引数のCallbackinvocabledestructible制約を満たさなければならい。

#include <cassert>
#include <stop_token>
#include <string>

int main()
{
  std::string msg;

  std::stop_source ss;
  std::stop_token st = ss.get_token();
  std::stop_callback cb1(st, [&] { msg += "hello"; });

  assert(msg == "");

  ss.request_stop();

  // 停止要求が作成される前に登録されていたコールバック関数は、
  // 停止要求が作成された際にその中で呼び出される
  assert(msg == "hello");

  std::stop_callback cb2(st, [&] { msg += " world"; });

  // 停止要求が作成されたあとに登録されたコールバック関数は、
  // std::stop_callback クラスのコンストラクタの中で即座に呼び出される
  assert(msg == "hello world");
}

出力

バージョン

言語

  • C++20

処理系