#fetch_add
T fetch_add(T operand, memory_order order = memory_order_seq_cst) volatile noexcept;
T fetch_add(T operand, memory_order order = memory_order_seq_cst) noexcept;- memory_order[link /reference/atomic/memory_order]
- memory_order_seq_cst[link /reference/atomic/memory_order]
##概要
加算を行う
##効果
orderで指定されたメモリオーダーにしたがって、現在の値にoperandを加算した値でアトミックに置き換える
##戻り値
変更前の値が返される
##例外
投げない
##備考
この関数は、atomicクラスの整数型およびポインタに対する特殊化で定義される。
符号付き整数型に対しては、2の補数表現による演算が行われ、未定義動作はない。アドレス型に関しては結果として未定義アドレスになる場合があるが、それ以外の未定義動作はない。
##例
#include <iostream>
#include <atomic>
int main()
{
std::atomic<int> x(3);
int before = x.fetch_add(2);
std::cout << before << std::endl;
std::cout << x.load() << std::endl;
}- fetch_add[color ff0000]
###出力
3
5##バージョン
###言語
- C++11
###処理系
- Clang: ??
- GCC:
- GCC, C++0x mode: 4.7.0
- ICC: ??
- Visual C++ ??
##参照