std::atomic_ref<T>::operator&=,|=,^=

< cpp‎ | atomic‎ | atomic ref
atomic<整数类型 > 特化才有的成员
T operator&=( T arg ) const noexcept;
(1) (C++20 起)
T operator|=( T arg ) const noexcept;
(2) (C++20 起)
T operator^=( T arg ) const noexcept;
(3) (C++20 起)

原子地以涉及先前值和 arg 的运算的结果替换被引用对象的当前值。这些操作是读修改写操作。

  • operator&= 进行原子逐位与。等价于 return fetch_and(arg) & arg;
  • operator!= 进行原子逐位或。等价于 return fetch_or(arg) | arg;
  • operator^= 进行原子逐位异或。等价于 return fetch_xor(arg) ^ arg;

参数

arg - 算术运算的实参

返回值

结果值(即对紧接对应的成员函数生效之前的值应用对应的二元运算符的结果)。

注解

不同于大多数复合赋值运算符,atomic_ref 的复合赋值运算符并不返回到其左侧实参的引用。它们代之以返回存储的值的副本。

示例

参阅

原子地在实参和被引用对象的值间进行逐位与,并获得先前保有的值
(公开成员函数)
原子地在实参和被引用对象的值间进行逐位或,并获得先前保有的值
(公开成员函数)
原子地在实参和被引用对象的值间进行逐位异或,并获得先前保有的值
(公开成员函数)
原子地将被引用对象增加或减少一
(公开成员函数)
原子地和被引用值加、减
(公开成员函数)