公有成员函数
<atomic>

std::atomic::operator (复合赋值)

如果 T 是整数类型 (1)
T operator+= (T val) volatile noexcept;T operator+= (T val) noexcept;T operator-= (T val) volatile noexcept;T operator-= (T val) noexcept;T operator&= (T val) volatile noexcept;T operator&= (T val) noexcept;T operator|= (T val) volatile noexcept;T operator|= (T val) noexcept;T operator^= (T val) volatile noexcept;T operator^= (T val) noexcept;
如果 T 是指针类型 (2)
T operator+= (ptrdiff_t val) volatile noexcept;T operator+= (ptrdiff_t val) noexcept;T operator-= (ptrdiff_t val) volatile noexcept;T operator-= (ptrdiff_t val) noexcept;
复合赋值
atomic整数 (1)指针 (2) 类型的特例化支持复合赋值

这些函数中的每一个都访问“包含的值”,应用相应的运算符,并返回操作前“包含的值”的即时值;所有这些操作都在一次原子操作中完成,不受其他线程的影响。

这些函数表现得好像调用了相应的 fetch_* 成员函数,并将 memory_order_seq_cst 作为第二个参数。
运算符成员函数支持用于
复合赋值等效整数类型指针类型其他类型
+atomic::operator+=atomic::fetch_add
-atomic::operator-=atomic::fetch_sub
&atomic::operator&=atomic::fetch_and
|atomic::operator|=atomic::fetch_or
^atomic::operator^=atomic::fetch_xor

参数

val
要应用的值。
Tatomic 的模板参数(包含的值的类型)。
ptrdiff_t 是一个有符号整数类型。

返回值

应用操作后包含的值。
Tatomic 的模板参数(包含的值的类型)。

数据竞争

无数据竞争(原子操作)。该操作使用顺序一致性memory_order_seq_cst)。

异常安全

无异常保证: 绝不抛出异常。

另见