std::atomic_ref<T>:: operator++,++ (int) ,--,-- (int)
From cppreference.net
<
cpp
|
atomic
|
atomic ref
C++
Concurrency support library
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
std::atomic_ref
| Member functions | ||||
|
(C++26)
|
||||
|
Operations for arithmetic types
(except
bool
and pointer-to-object)
|
||||
|
Operations for integral types
(except
bool
and pointer-to-object)
|
||||
|
(C++26)
|
||||
|
(C++26)
|
||||
|
atomic_ref::operator++
atomic_ref::operator++(int)
atomic_ref::operator--
atomic_ref::operator--(int)
|
||||
|
Operations for integral types
(except
bool
)
|
||||
| Constants | ||||
T
が
cv
bool
以外の整数型またはオブジェクトへのポインタ型である場合にのみ提供される
|
||
|
value_type operator
++
(
)
const
noexcept
;
|
(1) | (C++20以降) |
|
value_type operator
++
(
int
)
const
noexcept
;
|
(2) | (C++20以降) |
|
value_type operator
--
(
)
const
noexcept
;
|
(3) | (C++20以降) |
|
value_type operator
--
(
int
)
const
noexcept
;
|
(4) | (C++20以降) |
参照先オブジェクトの現在値をアトミックにインクリメントまたはデクリメントします。これらの操作はread-modify-write操作です。
1)
アトミックな前置インクリメントを実行します。次と等価です:
return
fetch_add
(
1
)
+
1
;
。
2)
アトミックなポストインクリメントを実行します。次と等価です:
return
fetch_add
(
1
)
;
。
3)
アトミックな事前デクリメントを実行します。次と等価です:
return
fetch_sub
(
1
)
-
1
;
4)
アトミックな事後デクリメントを実行します。次と等価です:
return
fetch_sub
(
1
)
;
。
- 符号付き整数型の場合、算術演算は2の補数表現を使用することが定義されています。未定義の結果はありません。
- オブジェクトへのポインタ型の場合、結果は未定義のアドレスになる可能性がありますが、それ以外の操作には未定義動作はありません。プログラムは std:: remove_pointer_t < T > が完全オブジェクト型でない場合、不適格です。
これらのオーバーロードは、 std:: is_const_v < T > が false の場合にのみ、オーバーロード解決に参加します。
目次 |
戻り値
1,3)
変更後の参照先オブジェクトの値。
2,4)
変更前の参照先オブジェクトの値。
注記
ほとんどの前置インクリメントおよび前置デクリメント演算子とは異なり、
atomic_ref
の前置インクリメントおよび前置デクリメント演算子は、変更されたオブジェクトへの参照を返しません。代わりに格納された値のコピーを返します。
不具合報告
以下の動作変更の欠陥報告書は、以前に公開されたC++規格に対して遡及的に適用されました。
| DR | 適用対象 | 公開時の動作 | 正しい動作 |
|---|---|---|---|
|
LWG 3508
( P3323R1 ) |
C++20 | インクリメントおよびデクリメント演算子は const T に対して無意味であった |
constでない
T
のみを受け入れるように制約
|
関連項目
|
参照先オブジェクトに格納された値に引数をアトミックに加算し、以前に保持されていた値を取得する
(公開メンバ関数) |
|
|
参照先オブジェクトに格納された値から引数をアトミックに減算し、以前に保持されていた値を取得する
(公開メンバ関数) |
|
|
参照先の値にアトミックに加算または減算を行う
(公開メンバ関数) |
|
|
参照先の値とのビット単位AND、OR、XORをアトミックに実行する
(公開メンバ関数) |