Index: include/std/atomic =================================================================== --- include/std/atomic (revision 163946) +++ include/std/atomic (working copy) @@ -141,13 +141,16 @@ atomic(_Tp* __v) : atomic_address(__v) { } void - store(_Tp*, memory_order = memory_order_seq_cst); + store(_Tp* __v, memory_order __m = memory_order_seq_cst) + { atomic_address::store(__v, __m); } _Tp* - load(memory_order = memory_order_seq_cst) const; + load(memory_order __m = memory_order_seq_cst) const + { return static_cast<_Tp*>(atomic_address::load(__m)); } _Tp* - exchange(_Tp*, memory_order = memory_order_seq_cst); + exchange(_Tp* __v, memory_order __m = memory_order_seq_cst) + { return static_cast<_Tp*>(atomic_address::exchange(__v, __m)); } bool compare_exchange_weak(_Tp*&, _Tp*, memory_order, memory_order); @@ -487,18 +490,7 @@ using __base_type::operator=; }; - template - _Tp* - atomic<_Tp*>::load(memory_order __m) const - { return static_cast<_Tp*>(atomic_address::load(__m)); } - - template - _Tp* - atomic<_Tp*>::exchange(_Tp* __v, memory_order __m) - { return static_cast<_Tp*>(atomic_address::exchange(__v, __m)); } - - template bool atomic<_Tp*>::compare_exchange_weak(_Tp*& __r, _Tp* __v, memory_order __m1, memory_order __m2)