• Class / Function / Type

      std::
    • Header file

      <>
    • Other / All

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

    履歴 編集

    function
    <atomic>

    std::atomic_ref::exchange

    T
      exchange(T desired,
               memory_order order = memory_order_seq_cst) const noexcept; // (1) C++20
    constexpr value_type
      exchange(value_type desired,
               memory_order order = memory_order_seq_cst) const noexcept; // (1) C++26
    

    概要

    値を入れ替える

    テンプレートパラメータ制約

    効果

    orderで指定されたメモリオーダーにしたがって、*thisが参照する値をdesiredでアトミックに置き換える

    戻り値

    この関数の呼び出し前に*thisが参照していた値が、アトミックに返される

    例外

    投げない

    #include <iostream>
    #include <atomic>
    
    int main()
    {
      int value = 1;
      std::atomic_ref<int> x{value};
    
      if (x.exchange(2) == 1) {
        std::cout << "replaced 1 by 2" << std::endl;
      }
    }
    

    出力

    replaced 1 by 2
    

    バージョン

    言語

    • C++20

    処理系

    参照