函式
<atomic>

std::atomic_compare_exchange_strong_explicit

模板 (1)
template <class T>bool atomic_compare_exchange_strong_explicit (volatile atomic<T>* obj,        T* expected, T val, memory_order success, memory_order failure) noexcept;template <class T>bool atomic_compare_exchange_strong_explicit (atomic<T>* obj,        T* expected, T val, memory_order success, memory_order failure) noexcept;
過載 (2)
bool atomic_compare_exchange_strong_explicit (volatile A* obj,        T* expected, T val, memory_order success, memory_order failure) noexcept;bool atomic_compare_exchange_strong_explicit (A* obj,        T* expected, T val, memory_order success, memory_order failure) noexcept;
比較並交換包含的值(強,顯式)
操作方式與 atomic_compare_exchange_strong 相同,但它還允許指定成功和失敗時使用的*記憶體順序*。

有關 atomic 的等效成員函式,請參閱 atomic::compare_exchange_strong

引數

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

資料競爭

無資料競爭(原子操作)。記憶體順序由引數*success*和*failure*指定。

異常安全

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

另見