return __atomic_exchange_n(&_M_p, __p, int(__m));
}
+ _GLIBCXX_ALWAYS_INLINE bool
+ compare_exchange_weak(__pointer_type& __p1, __pointer_type __p2,
+ memory_order __m1,
+ memory_order __m2) noexcept
+ {
+ __glibcxx_assert(__is_valid_cmpexch_failure_order(__m2));
+
+ return __atomic_compare_exchange_n(&_M_p, &__p1, __p2, 1,
+ int(__m1), int(__m2));
+ }
+
+ _GLIBCXX_ALWAYS_INLINE bool
+ compare_exchange_weak(__pointer_type& __p1, __pointer_type __p2,
+ memory_order __m1,
+ memory_order __m2) volatile noexcept
+ {
+ __glibcxx_assert(__is_valid_cmpexch_failure_order(__m2));
+
+ return __atomic_compare_exchange_n(&_M_p, &__p1, __p2, 1,
+ int(__m1), int(__m2));
+ }
+
_GLIBCXX_ALWAYS_INLINE bool
compare_exchange_strong(__pointer_type& __p1, __pointer_type __p2,
memory_order __m1,
bool
compare_exchange_weak(__pointer_type& __p1, __pointer_type __p2,
memory_order __m1, memory_order __m2) noexcept
- { return _M_b.compare_exchange_strong(__p1, __p2, __m1, __m2); }
+ { return _M_b.compare_exchange_weak(__p1, __p2, __m1, __m2); }
bool
compare_exchange_weak(__pointer_type& __p1, __pointer_type __p2,
memory_order __m1,
memory_order __m2) volatile noexcept
- { return _M_b.compare_exchange_strong(__p1, __p2, __m1, __m2); }
+ { return _M_b.compare_exchange_weak(__p1, __p2, __m1, __m2); }
bool
compare_exchange_weak(__pointer_type& __p1, __pointer_type __p2,