最終更新日時: 2025年02月27日 15時55分09秒 (JST)
Akira Takahashi が更新

履歴 編集

function
<stop_token>

# std::stop_token::stop_requested(C++20)

    [[nodiscard]]
    bool stop_requested() const noexcept; // (1) C++20
    bool stop_requested() const noexcept; // (1) C++26

## 概要

停止要求が作成されたかどうかを返す。

## 戻り値

自身が停止状態を所有していて、その停止状態が停止要求を受け取っている場合は`true`を返す。それ以外の場合は`false`を返す。

## 例外

投げない。

## 備考

一度`stop_requested() == true`となった`stop_token`は、自身と停止状態を共有する`stop_source`が破棄されても`stop_requested() == true`かつ`stop_possible() == true`の状態のままになる。

## 例

    #include <cassert>
    #include <stop_token>

    int main()
    {
      std::stop_source ss1;
      std::stop_source ss2;

      std::stop_token st1 = ss1.get_token();
      std::stop_token st2 = ss2.get_token();
      std::stop_token st3;

      assert(st1.stop_requested() == false);
      assert(st2.stop_requested() == false);
      assert(st3.stop_requested() == false);

      // 停止要求を作成する
      ss1.request_stop();

      assert(st1.stop_requested() == true);

      // stop_token に紐づく stop_source を破棄する
      ss1 = std::stop_source{};

      // 停止状態が停止要求を受け取った場合は、
      // その後で stop_source が破棄されても stop_requested() == true のままになる。
      assert(st1.stop_requested() == true);
    }

### 出力

## バージョン

### 言語

- C++20

### 処理系

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

## 参照

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