函式
<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 指定。

異常安全

無異常保證: 絕不丟擲異常。

另見