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 |
適格要件
テンプレート引数のCallback
はinvocable
とdestructible
制約を満たさなければならい。
事前条件
テンプレート引数のCallback
はinvocable
とdestructible
制約を満たさなければならい。
例
#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
処理系
- Clang: ??
- GCC: ??
- ICC: ??
- Visual C++: ??