Defined in header <atomic> (1) (since C++11) template< class T >
bool atomic_compare_exchange_weak( std::atomic<T>* obj,
T* expected, T desired ); template< class T >
bool atomic_compare_exchange_weak( volatile std::atomic<T>* obj,
T* expected, T desired ); (2) (since C++11) template< class T >
bool atomic_compare_exchange_strong( std::atomic<T>* obj,