- stop_token[meta header]
- std[meta namespace]
- class template[meta id-type]
- cpp20[meta cpp]
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");
}- std::stop_callback[color ff0000]
- std::stop_token[link stop_token.md]
- std::stop_source[link stop_source.md]
- request_stop()[link stop_source/request_stop.md]
- get_token()[link stop_source/get_token.md]
- C++20
- Clang: ??
- GCC: ??
- ICC: ??
- Visual C++: ??