最終更新日時: 2025年04月07日 17時11分27秒 (JST)
yoh が更新

履歴 編集

function
<stop_token>

# std::stop_token::swap (非メンバ関数)(C++20)

    friend void swap(stop_token& x, stop_token& y) noexcept;

## 概要

2つの`stop_token`オブジェクトを入れ替える。

## 効果

以下と等価：

    x.swap(y);

## 戻り値

なし

## 例外

なし

## 備考

C++26で`swap`非メンバ関数は`stop_token`クラス定義から削除されるが、`std::swap`の値版により従来動作は維持される。

## 例

    #include <cassert>
    #include <stop_token>

    int main()
    {
      std::stop_source ss;
      std::stop_token st1 = ss.get_token();
      std::stop_token st2;

      assert(st1.stop_possible() == true);
      assert(st2.stop_possible() == false);

      swap(st1, st2);

      assert(st1.stop_possible() == false);
      assert(st2.stop_possible() == true);
    }

### 出力

## バージョン

### 言語

- C++20

### 処理系

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

## 参照

- P0660R10 Stop token and joining thread
- P2300R10 `std::execution`
  - C++26で非メンバ関数`swap`定義を削除