最終更新日時(UTC): 2025年06月08日 12時43分49秒
yoh が更新

履歴 編集

class template
<stop_token>

# std::inplace_stop_callback(C++26)

    namespace std {
      template<class CallbackFn>
      class inplace_stop_callback;
    }

## 概要

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

## 適格要件

テンプレート引数`CallbackFn`が`invocable`および`destructible`を満たすこと。

## メンバ関数

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

## メンバ型

名前 | 説明 | 対応バージョン
--- | --- | ---
`callback_type` | `CallbackFn` | C++26

## 推論補助

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

## 例

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

    int main()
    {
      std::string msg;

      std::inplace_stop_source ss;
      std::inplace_stop_token st = ss.get_token();
      std::inplace_stop_callback cb1(st, [&] { msg += "hello"; });

      assert(msg == "");

      ss.request_stop();

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

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

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

### 出力

## バージョン

### 言語

- C++26

### 処理系

- Clang: ??
- GCC: ??
- ICC: ??
- Visual C++: ??

## 関連項目

- `inplace_stop_token`
- `inplace_stop_source`

## 参照

- P2300R10 `std::execution`