函数
<atomic>

std::atomic_compare_exchange_weak_explicit

template (1)
template <class T>bool atomic_compare_exchange_weak_explicit (volatile atomic<T>* obj,        T* expected, T val, memory_order success, memory_order failure) noexcept;template <class T>bool atomic_compare_exchange_weak_explicit (atomic<T>* obj,        T* expected, T val, memory_order success, memory_order failure) noexcept;
重载 (2)
bool atomic_compare_exchange_weak_explicit (volatile A* obj,        T* expected, T val, memory_order success, memory_order failure) noexcept;bool atomic_compare_exchange_weak_explicit (A* obj,        T* expected, T val, memory_order success, memory_order failure) noexcept;
比较并交换包含的值(弱,显式)
其操作方式与 atomic_compare_exchange_weak 相同,但它还允许指定在 成功失败 时使用的 内存顺序

有关 atomic 的等效成员函数,请参阅 atomic::compare_exchange_weak

参数

obj
指向 atomic 对象的指针。
类型 A 代表其他重载的 *原子类型* (如果库不实现 *C 风格原子类型* 作为 atomic 的实例)。
expected
指向一个对象,其值将与包含的值进行比较,并且在不匹配的情况下可能被覆盖包含的值
T 是原子对象中包含的值的类型(atomic 的模板参数)。
val
expected包含的值匹配时,要复制到包含对象的值。
T 是原子对象中包含的值的类型(atomic 的模板参数)。
success
expected包含的值匹配时,操作的同步模式。
这应是 memory_order 枚举类型的一个值。
failure
expected包含的值不匹配时,操作的同步模式。
这应是 memory_order 枚举类型的一个值,该值既不是 memory_order_release 也不是 memory_order_acq_rel,且其强度不大于 success

返回值

如果 *expected包含的值相等(且未出现虚假失败),则为 true
否则返回 false

数据竞争

无数据竞争(原子操作)。内存顺序由参数 successfailure 指定。

异常安全

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

另见