最終更新日時: 2025年07月09日 17時52分14秒 (JST)
Akira Takahashi が更新

履歴 編集

function
<thread>

# std::jthread::get_stop_token(C++20)

    [[nodiscard]]
    stop_token get_stop_token() const noexcept; // (1) C++20
    stop_token get_stop_token() const noexcept; // (1) C++26

## 概要

停止状態を問い合わせるための`stop_token`オブジェクトを取得する。

## 戻り値

メンバ変数として保持している`stop_source`型オブジェクト`ssource`があるとして、以下と等価：

    return ssource.get_token();

## 例外

送出しない。

## 例

    #include <iostream>
    #include <cassert>
    #include <thread>

    int main()
    {
      std::jthread jt {
        [](std::stop_token stoken) {
          while (!stoken.stop_requested()) {}
          std::cout << "exit thread" << std::endl;
        }
      };

      jt.request_stop();

      // 停止要求が正しく発行されたか調べる
      assert(jt.get_stop_token().stop_requested());
    }

### 出力

    exit thread

## バージョン

### 言語

- C++20

### 処理系

- Clang:
- GCC: 10.2.0 ✅
- Visual C++: ??

## 参照

- P2422R1 Remove `nodiscard` annotations from the standard library specification
  - C++26で`[[nodiscard]]`指定が削除された