std::atomic_fetch_xor, std::atomic_fetch_xor_explicit
From cppreference.com
| ヘッダー <atomic> で定義 |
||
| template< class T > T atomic_fetch_xor( std::atomic<T>* obj, |
(1) | (C++11以降) |
| template< class T > T atomic_fetch_xor( volatile std::atomic<T>* obj, |
(2) | (C++11以降) |
| template< class T > T atomic_fetch_xor_explicit( std::atomic<T>* obj, |
(3) | (C++11以降) |
| template< class T > T atomic_fetch_xor_explicit( volatile std::atomic<T>* obj, |
(4) | (C++11以降) |
obj が指す値を、obj の古い値と arg のビットごとのXOR演算の結果でアトミックに置き換えます。obj が以前に保持していた値を返します。
この操作は、以下が実行されるかのように行われます。
1,2) obj->fetch_xor(arg)
3,4) obj->fetch_xor(arg, order)
std::atomic<T> に fetch_xor メンバーがない場合(このメンバーは bool を除く 整数型 のみに提供されています)、プログラムは不定形です。
目次 |
[edit] パラメータ
| obj | - | 操作対象のアトミックオブジェクトへのポインタ |
| arg | - | アトミックオブジェクトに格納されている値とビットごとのXOR演算する値 |
| order | - | メモリ同期順序 |
[edit] 戻り値
*objの修正順序において、この関数の効果の直前の値。
[edit] 例
| このセクションは未完成です 理由: 例がありません |
[edit] 不具合報告
以下の動作変更を伴う欠陥報告が、以前に公開されたC++標準に遡って適用されました。
| DR | 適用対象 | 公開された動作 | 正しい動作 |
|---|---|---|---|
| P0558R1 | C++11 | 厳密な型一致が必要であったためTは複数の引数から推論された |
Tは推論されるのみobj から |
[edit] 関連項目
| 引数とアトミックオブジェクトの値との間でビット単位XORをアトミックに実行し、以前に保持されていた値を取得する ( std::atomic<T> の公開メンバ関数) | |
| (C++11)(C++11) |
アトミックオブジェクトを非アトミックな引数とのビット単位ORの結果で置き換え、アトミックオブジェクトの以前の値を取得する (関数テンプレート) |
| (C++11)(C++11) |
アトミックオブジェクトを非アトミックな引数とのビット単位ANDの結果で置き換え、アトミックオブジェクトの以前の値を取得する (関数テンプレート) |
| C言語のドキュメント (atomic_fetch_xor, atomic_fetch_xor_explicit)
| |