名前空間
変種
操作

std::atomic::operator++,++(int),--,--(int)

提供: cppreference.com
< cpp‎ | atomic‎ | atomic
 
 
 
 
T operator++() noexcept;
T operator++() volatile noexcept;
(1) (atomic<整数型> テンプレート特殊化のみのメンバ)
(C++11およびそれ以降)
T* operator++() noexcept;
T* operator++() volatile noexcept;
(1) (atomic<T*> テンプレート特殊化のみのメンバ)
(C++11およびそれ以降)
T operator++( int ) noexcept;
T operator++( int ) volatile noexcept;
(2) (atomic<整数型> テンプレート特殊化のみのメンバ)
(C++11およびそれ以降)
T* operator++( int ) noexcept;
T* operator++( int ) volatile noexcept;
(2) (atomic<T*> テンプレート特殊化のみのメンバ)
(C++11およびそれ以降)
T operator--() noexcept;
T operator--() volatile noexcept;
(3) (atomic<整数型> テンプレート特殊化のみのメンバ)
(C++11およびそれ以降)
T* operator--() noexcept;
T* operator--() volatile noexcept;
(3) (atomic<T*> テンプレート特殊化のみのメンバ)
(C++11およびそれ以降)
T operator--( int ) noexcept;
T operator--( int ) volatile noexcept;
(4) (atomic<整数型> テンプレート特殊化のみのメンバ)
(C++11およびそれ以降)
T* operator--( int ) noexcept;
T* operator--( int ) volatile noexcept;
(4) (atomic<T*> テンプレート特殊化のみのメンバ)
(C++11およびそれ以降)

現在の値をアトミックにインクリメントまたはデクリメントします。 この操作は読み込み-変更-書き込み操作です。

1) アトミックな前置インクリメントを行います。 fetch_add(1)+1 と同等です。
2) アトミックな後置インクリメントを行います。 fetch_add(1) と同等です。
3) アトミックな前置デクリメントを行います。 fetch_sub(1)-1 と同等です。
4) アトミックな後置デクリメントを行います。 fetch_sub(1) と同等です。

符号付きの整数型の場合、算術演算は2の補数表現を使用すると定義されています。 未定義の結果はありません。

T* 型の場合、結果が未定義のアドレスとなることはありますが、それを除けば演算は未定義動作を持ちません。 T がオブジェクト型でない場合、プログラムは ill-formed です。

目次

[編集] 引数

(なし)

[編集] 戻り値

1,3) 変更後のアトミック変数の値。 形式的には、 *this変更順序における、この関数の効果の直前の値を、インクリメントまたはデクリメントした結果。
2,4) 変更前のアトミック変数の値。 形式的には、 *this変更順序 における、この関数の効果の直前の値。

[編集] ノート

ほとんどの前置インクリメントおよび前置デクリメント演算子と異なり、アトミック型の前置インクリメントおよび前置デクリメント演算子は、変更されたオブジェクトを指す参照を返しません。 代わりに格納された値のコピーを返します。

[編集] 欠陥報告

以下の動作変更欠陥報告は以前に発行された C++ 標準に遡って適用されました。

DR 適用先 発行時の動作 正しい動作
P0558R1 C++11 arithmetic permitted on pointers to cv void or function made ill-formed

[編集] 関連項目

アトミックオブジェクトに格納されている値に引数の値をアトミックに加算し、以前保持されていた値を取得します
(パブリックメンバ関数) [edit]
アトミックオブジェクトに格納されている値から引数の値をアトミックに減算し、以前保持されていた値を取得します
(パブリックメンバ関数) [edit]
アトミック値に対して加算、減算、ビット単位の論理積、論理和、排他的論理和を行います
(パブリックメンバ関数) [edit]