• Class / Function / Type

      std::
    • Header file

      <>
    • Other / All

    最終更新日時(UTC):
    が更新

    履歴 編集

    function
    <stop_token>

    std::stop_source::コンストラクタ

    stop_source();                                // (1)
    explicit stop_source(nostopstate_t) noexcept; // (2)
    stop_source(const stop_source& rhs) noexcept; // (3)
    stop_source(stop_source&& rhs) noexcept;      // (4)
    

    概要

    • (1) : デフォルトコンストラクタ。停止状態を表すリソースを新たに確保して所有する。
    • (2) : 停止状態を表すリソースを確保しないコンストラクタ。
    • (3) : コピーコンストラクタ。
    • (4) : ムーブコンストラクタ。

    事後条件

    • (1) : stop_possible() == true かつstop_requested() == false
    • (2) : stop_possible() == false かつstop_requested() == false
    • (2) : *this == rhs。(rhsが停止状態を所有していれば、*thisrhsは同じ停止状態を共有するようになる)
    • (4) : もしrhsが停止状態を所有していればその所有権が*thisへ移動し、rhs.stop_possible() == falseとなる。

    例外

    • (1) : 停止状態を表すリソースを確保できなかった場合は、bad_allocを投げる。
    • (2) : 投げない。
    • (3) : 投げない。
    • (4) : 投げない。

    #include <cassert>
    #include <stop_token>
    
    int main()
    {
      std::stop_source ss1;
      std::stop_source ss2(std::nostopstate);
      std::stop_source ss3 = ss1;
      std::stop_source ss4 = std::move(ss1);
    
      assert(ss1.stop_possible() == false);
      assert(ss2.stop_possible() == false);
      assert(ss3.stop_possible() == true);
      assert(ss4.stop_possible() == true);
    
      ss3.request_stop();
    
      assert(ss3.stop_requested() == true);
      assert(ss4.stop_requested() == true);
    }
    

    出力

    バージョン

    言語

    • C++20

    処理系