/
usr
/
include
/
c++
/
4.4.4
/
/usr/include/c++/4.4.4
mkdir
upload
Name
Size
Mode
Actions
backward/
-
0755
rm
bits/
-
0755
rm
debug/
-
0755
rm
ext/
-
0755
rm
parallel/
-
0755
rm
tr1/
-
0755
rm
tr1_impl/
-
0755
rm
x86_64-redhat-linux/
-
0755
rm
algorithm
2528
0644
edit
dl
rm
array
1861
0644
edit
dl
rm
bitset
38246
0644
edit
dl
rm
c++0x_warning.h
1441
0644
edit
dl
rm
cassert
1691
0644
edit
dl
rm
ccomplex
1425
0644
edit
dl
rm
cctype
2862
0644
edit
dl
rm
cerrno
1813
0644
edit
dl
rm
cfenv
1872
0644
edit
dl
rm
cfloat
2046
0644
edit
dl
rm
chrono
21125
0644
edit
dl
rm
cinttypes
2151
0644
edit
dl
rm
ciso646
1513
0644
edit
dl
rm
climits
1956
0644
edit
dl
rm
clocale
1996
0644
edit
dl
rm
cmath
15560
0644
edit
dl
rm
complex
42262
0644
edit
dl
rm
complex.h
1374
0644
edit
dl
rm
condition_variable
6208
0644
edit
dl
rm
csetjmp
2040
0644
edit
dl
rm
csignal
1946
0644
edit
dl
rm
cstdarg
1935
0644
edit
dl
rm
cstdatomic
24336
0644
edit
dl
rm
cstdbool
1412
0644
edit
dl
rm
cstddef
1830
0644
edit
dl
rm
cstdint
2374
0644
edit
dl
rm
cstdio
4812
0644
edit
dl
rm
cstdlib
5723
0644
edit
dl
rm
cstring
3261
0644
edit
dl
rm
ctgmath
1327
0644
edit
dl
rm
ctime
2211
0644
edit
dl
rm
cwchar
6538
0644
edit
dl
rm
cwctype
3294
0644
edit
dl
rm
cxxabi-forced.h
1631
0644
edit
dl
rm
cxxabi.h
19106
0644
edit
dl
rm
deque
2658
0644
edit
dl
rm
exception
4856
0644
edit
dl
rm
exception_defines.h
1648
0644
edit
dl
rm
exception_ptr.h
4355
0644
edit
dl
rm
fenv.h
1888
0644
edit
dl
rm
forward_list
1480
0644
edit
dl
rm
fstream
29267
0644
edit
dl
rm
functional
2658
0644
edit
dl
rm
initializer_list
1987
0644
edit
dl
rm
iomanip
8696
0644
edit
dl
rm
ios
1658
0644
edit
dl
rm
iosfwd
6017
0644
edit
dl
rm
iostream
2654
0644
edit
dl
rm
istream
28304
0644
edit
dl
rm
iterator
2639
0644
edit
dl
rm
limits
45520
0644
edit
dl
rm
list
2588
0644
edit
dl
rm
locale
1480
0644
edit
dl
rm
map
2479
0644
edit
dl
rm
memory
3356
0644
edit
dl
rm
mutex
18380
0644
edit
dl
rm
new
3735
0644
edit
dl
rm
numeric
2808
0644
edit
dl
rm
ostream
18442
0644
edit
dl
rm
queue
2507
0644
edit
dl
rm
random
2086
0644
edit
dl
rm
ratio
9176
0644
edit
dl
rm
regex
2002
0644
edit
dl
rm
set
2479
0644
edit
dl
rm
sstream
18876
0644
edit
dl
rm
stack
2431
0644
edit
dl
rm
stdatomic.h
7263
0644
edit
dl
rm
stdexcept
4247
0644
edit
dl
rm
streambuf
28107
0644
edit
dl
rm
string
2021
0644
edit
dl
rm
system_error
9434
0644
edit
dl
rm
tgmath.h
1368
0644
edit
dl
rm
thread
6562
0644
edit
dl
rm
tuple
21068
0644
edit
dl
rm
typeinfo
7170
0644
edit
dl
rm
type_traits
17152
0644
edit
dl
rm
unordered_map
2448
0644
edit
dl
rm
unordered_set
2448
0644
edit
dl
rm
utility
3320
0644
edit
dl
rm
valarray
36486
0644
edit
dl
rm
vector
2698
0644
edit
dl
rm
Edit:
/usr/include/c++/4.4.4/cstdatomic
(24336B)
// -*- C++ -*- header. // Copyright (C) 2008, 2009 // Free Software Foundation, Inc. // // This file is part of the GNU ISO C++ Library. This library is free // software; you can redistribute it and/or modify it under the // terms of the GNU General Public License as published by the // Free Software Foundation; either version 3, or (at your option) // any later version. // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // Under Section 7 of GPL version 3, you are granted additional // permissions described in the GCC Runtime Library Exception, version // 3.1, as published by the Free Software Foundation. // You should have received a copy of the GNU General Public License and // a copy of the GCC Runtime Library Exception along with this program; // see the files COPYING3 and COPYING.RUNTIME respectively. If not, see // <http://www.gnu.org/licenses/>. /** @file cstdatomic * This is a Standard C++ Library file. You should @c #include this file * in your programs, rather than any of the "*.h" implementation files. * * This is the C++ version of the Standard C Library header @c stdatomic.h, * and its contents are (mostly) the same as that header, but are all * contained in the namespace @c std (except for names which are defined * as macros in C). */ // Based on "C++ Atomic Types and Operations" by Hans Boehm and Lawrence Crowl. // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2427.html #ifndef _GLIBCXX_STDATOMIC #define _GLIBCXX_STDATOMIC 1 #pragma GCC system_header #ifndef __GXX_EXPERIMENTAL_CXX0X__ # include <c++0x_warning.h> #endif #include <stdatomic.h> #include <cstddef> _GLIBCXX_BEGIN_NAMESPACE(std) /** * @addtogroup atomics * @{ */ /// kill_dependency template<typename _Tp> inline _Tp kill_dependency(_Tp __y) { _Tp ret(__y); return ret; } inline memory_order __calculate_memory_order(memory_order __m) { const bool __cond1 = __m == memory_order_release; const bool __cond2 = __m == memory_order_acq_rel; memory_order __mo1(__cond1 ? memory_order_relaxed : __m); memory_order __mo2(__cond2 ? memory_order_acquire : __mo1); return __mo2; } // // Three nested namespaces for atomic implementation details. // // The nested namespace inlined into std:: is determined by the value // of the _GLIBCXX_ATOMIC_PROPERTY macro and the resulting // ATOMIC_*_LOCK_FREE macros. See file stdatomic.h. // // 0 == __atomic0 == Never lock-free // 1 == __atomic1 == Best available, sometimes lock-free // 2 == __atomic2 == Always lock-free #include <bits/atomic_0.h> #include <bits/atomic_2.h> /// atomic /// 29.4.3, Generic atomic type, primary class template. template<typename _Tp> struct atomic { private: _Tp _M_i; public: atomic() = default; ~atomic() = default; atomic(const atomic&) = delete; atomic& operator=(const atomic&) = delete; atomic(_Tp __i) : _M_i(__i) { } operator _Tp() const volatile; _Tp operator=(_Tp __i) volatile { store(__i); return __i; } bool is_lock_free() const volatile; void store(_Tp, memory_order = memory_order_seq_cst) volatile; _Tp load(memory_order = memory_order_seq_cst) const volatile; _Tp exchange(_Tp __i, memory_order = memory_order_seq_cst) volatile; bool compare_exchange_weak(_Tp&, _Tp, memory_order, memory_order) volatile; bool compare_exchange_strong(_Tp&, _Tp, memory_order, memory_order) volatile; bool compare_exchange_weak(_Tp&, _Tp, memory_order = memory_order_seq_cst) volatile; bool compare_exchange_strong(_Tp&, _Tp, memory_order = memory_order_seq_cst) volatile; }; /// Partial specialization for pointer types. template<typename _Tp> struct atomic<_Tp*> : atomic_address { atomic() = default; ~atomic() = default; atomic(const atomic&) = delete; atomic& operator=(const atomic&) = delete; atomic(_Tp* __v) : atomic_address(__v) { } void store(_Tp*, memory_order = memory_order_seq_cst) volatile; _Tp* load(memory_order = memory_order_seq_cst) const volatile; _Tp* exchange(_Tp*, memory_order = memory_order_seq_cst) volatile; bool compare_exchange_weak(_Tp*&, _Tp*, memory_order, memory_order) volatile; bool compare_exchange_strong(_Tp*&, _Tp*, memory_order, memory_order) volatile; bool compare_exchange_weak(_Tp*&, _Tp*, memory_order = memory_order_seq_cst) volatile; bool compare_exchange_strong(_Tp*&, _Tp*, memory_order = memory_order_seq_cst) volatile; _Tp* fetch_add(ptrdiff_t, memory_order = memory_order_seq_cst) volatile; _Tp* fetch_sub(ptrdiff_t, memory_order = memory_order_seq_cst) volatile; operator _Tp*() const volatile { return load(); } _Tp* operator=(_Tp* __v) volatile { store(__v); return __v; } _Tp* operator++(int) volatile { return fetch_add(1); } _Tp* operator--(int) volatile { return fetch_sub(1); } _Tp* operator++() volatile { return fetch_add(1) + 1; } _Tp* operator--() volatile { return fetch_sub(1) - 1; } _Tp* operator+=(ptrdiff_t __d) volatile { return fetch_add(__d) + __d; } _Tp* operator-=(ptrdiff_t __d) volatile { return fetch_sub(__d) - __d; } }; /// Explicit specialization for void* template<> struct atomic<void*> : public atomic_address { typedef void* __integral_type; typedef atomic_address __base_type; atomic() = default; ~atomic() = default; atomic(const atomic&) = delete; atomic& operator=(const atomic&) = delete; atomic(__integral_type __i) : __base_type(__i) { } using __base_type::operator __integral_type; using __base_type::operator=; }; /// Explicit specialization for bool. template<> struct atomic<bool> : public atomic_bool { typedef bool __integral_type; typedef atomic_bool __base_type; atomic() = default; ~atomic() = default; atomic(const atomic&) = delete; atomic& operator=(const atomic&) = delete; atomic(__integral_type __i) : __base_type(__i) { } using __base_type::operator __integral_type; using __base_type::operator=; }; /// Explicit specialization for char. template<> struct atomic<char> : public atomic_char { typedef char __integral_type; typedef atomic_char __base_type; atomic() = default; ~atomic() = default; atomic(const atomic&) = delete; atomic& operator=(const atomic&) = delete; atomic(__integral_type __i) : __base_type(__i) { } using __base_type::operator __integral_type; using __base_type::operator=; }; /// Explicit specialization for signed char. template<> struct atomic<signed char> : public atomic_schar { typedef signed char __integral_type; typedef atomic_schar __base_type; atomic() = default; ~atomic() = default; atomic(const atomic&) = delete; atomic& operator=(const atomic&) = delete; atomic(__integral_type __i) : __base_type(__i) { } using __base_type::operator __integral_type; using __base_type::operator=; }; /// Explicit specialization for unsigned char. template<> struct atomic<unsigned char> : public atomic_uchar { typedef unsigned char __integral_type; typedef atomic_uchar __base_type; atomic() = default; ~atomic() = default; atomic(const atomic&) = delete; atomic& operator=(const atomic&) = delete; atomic(__integral_type __i) : __base_type(__i) { } using __base_type::operator __integral_type; using __base_type::operator=; }; /// Explicit specialization for short. template<> struct atomic<short> : public atomic_short { typedef short __integral_type; typedef atomic_short __base_type; atomic() = default; ~atomic() = default; atomic(const atomic&) = delete; atomic& operator=(const atomic&) = delete; atomic(__integral_type __i) : __base_type(__i) { } using __base_type::operator __integral_type; using __base_type::operator=; }; /// Explicit specialization for unsigned short. template<> struct atomic<unsigned short> : public atomic_ushort { typedef unsigned short __integral_type; typedef atomic_ushort __base_type; atomic() = default; ~atomic() = default; atomic(const atomic&) = delete; atomic& operator=(const atomic&) = delete; atomic(__integral_type __i) : __base_type(__i) { } using __base_type::operator __integral_type; using __base_type::operator=; }; /// Explicit specialization for int. template<> struct atomic<int> : atomic_int { typedef int __integral_type; typedef atomic_int __base_type; atomic() = default; ~atomic() = default; atomic(const atomic&) = delete; atomic& operator=(const atomic&) = delete; atomic(__integral_type __i) : __base_type(__i) { } using __base_type::operator __integral_type; using __base_type::operator=; }; /// Explicit specialization for unsigned int. template<> struct atomic<unsigned int> : public atomic_uint { typedef unsigned int __integral_type; typedef atomic_uint __base_type; atomic() = default; ~atomic() = default; atomic(const atomic&) = delete; atomic& operator=(const atomic&) = delete; atomic(__integral_type __i) : __base_type(__i) { } using __base_type::operator __integral_type; using __base_type::operator=; }; /// Explicit specialization for long. template<> struct atomic<long> : public atomic_long { typedef long __integral_type; typedef atomic_long __base_type; atomic() = default; ~atomic() = default; atomic(const atomic&) = delete; atomic& operator=(const atomic&) = delete; atomic(__integral_type __i) : __base_type(__i) { } using __base_type::operator __integral_type; using __base_type::operator=; }; /// Explicit specialization for unsigned long. template<> struct atomic<unsigned long> : public atomic_ulong { typedef unsigned long __integral_type; typedef atomic_ulong __base_type; atomic() = default; ~atomic() = default; atomic(const atomic&) = delete; atomic& operator=(const atomic&) = delete; atomic(__integral_type __i) : __base_type(__i) { } using __base_type::operator __integral_type; using __base_type::operator=; }; /// Explicit specialization for long long. template<> struct atomic<long long> : public atomic_llong { typedef long long __integral_type; typedef atomic_llong __base_type; atomic() = default; ~atomic() = default; atomic(const atomic&) = delete; atomic& operator=(const atomic&) = delete; atomic(__integral_type __i) : __base_type(__i) { } using __base_type::operator __integral_type; using __base_type::operator=; }; /// Explicit specialization for unsigned long long. template<> struct atomic<unsigned long long> : public atomic_ullong { typedef unsigned long long __integral_type; typedef atomic_ullong __base_type; atomic() = default; ~atomic() = default; atomic(const atomic&) = delete; atomic& operator=(const atomic&) = delete; atomic(__integral_type __i) : __base_type(__i) { } using __base_type::operator __integral_type; using __base_type::operator=; }; /// Explicit specialization for wchar_t. template<> struct atomic<wchar_t> : public atomic_wchar_t { typedef wchar_t __integral_type; typedef atomic_wchar_t __base_type; atomic() = default; ~atomic() = default; atomic(const atomic&) = delete; atomic& operator=(const atomic&) = delete; atomic(__integral_type __i) : __base_type(__i) { } using __base_type::operator __integral_type; using __base_type::operator=; }; /// Explicit specialization for char16_t. template<> struct atomic<char16_t> : public atomic_char16_t { typedef char16_t __integral_type; typedef atomic_char16_t __base_type; atomic() = default; ~atomic() = default; atomic(const atomic&) = delete; atomic& operator=(const atomic&) = delete; atomic(__integral_type __i) : __base_type(__i) { } using __base_type::operator __integral_type; using __base_type::operator=; }; /// Explicit specialization for char32_t. template<> struct atomic<char32_t> : public atomic_char32_t { typedef char32_t __integral_type; typedef atomic_char32_t __base_type; atomic() = default; ~atomic() = default; atomic(const atomic&) = delete; atomic& operator=(const atomic&) = delete; atomic(__integral_type __i) : __base_type(__i) { } using __base_type::operator __integral_type; using __base_type::operator=; }; template<typename _Tp> _Tp* atomic<_Tp*>::load(memory_order __m) const volatile { return static_cast<_Tp*>(atomic_address::load(__m)); } template<typename _Tp> _Tp* atomic<_Tp*>::exchange(_Tp* __v, memory_order __m) volatile { return static_cast<_Tp*>(atomic_address::exchange(__v, __m)); } template<typename _Tp> bool atomic<_Tp*>::compare_exchange_weak(_Tp*& __r, _Tp* __v, memory_order __m1, memory_order __m2) volatile { void** __vr = reinterpret_cast<void**>(&__r); void* __vv = static_cast<void*>(__v); return atomic_address::compare_exchange_weak(*__vr, __vv, __m1, __m2); } template<typename _Tp> bool atomic<_Tp*>::compare_exchange_strong(_Tp*& __r, _Tp* __v, memory_order __m1, memory_order __m2) volatile { void** __vr = reinterpret_cast<void**>(&__r); void* __vv = static_cast<void*>(__v); return atomic_address::compare_exchange_strong(*__vr, __vv, __m1, __m2); } template<typename _Tp> bool atomic<_Tp*>::compare_exchange_weak(_Tp*& __r, _Tp* __v, memory_order __m) volatile { return compare_exchange_weak(__r, __v, __m, __calculate_memory_order(__m)); } template<typename _Tp> bool atomic<_Tp*>::compare_exchange_strong(_Tp*& __r, _Tp* __v, memory_order __m) volatile { return compare_exchange_strong(__r, __v, __m, __calculate_memory_order(__m)); } template<typename _Tp> _Tp* atomic<_Tp*>::fetch_add(ptrdiff_t __d, memory_order __m) volatile { void* __p = atomic_fetch_add_explicit(this, sizeof(_Tp) * __d, __m); return static_cast<_Tp*>(__p); } template<typename _Tp> _Tp* atomic<_Tp*>::fetch_sub(ptrdiff_t __d, memory_order __m) volatile { void* __p = atomic_fetch_sub_explicit(this, sizeof(_Tp) * __d, __m); return static_cast<_Tp*>(__p); } // Convenience function definitions, atomic_flag. inline bool atomic_flag_test_and_set_explicit(volatile atomic_flag* __a, memory_order __m) { return __a->test_and_set(__m); } inline void atomic_flag_clear_explicit(volatile atomic_flag* __a, memory_order __m) { return __a->clear(__m); } // Convenience function definitions, atomic_address. inline bool atomic_is_lock_free(const volatile atomic_address* __a) { return __a->is_lock_free(); } inline void atomic_store(volatile atomic_address* __a, void* __v) { __a->store(__v); } inline void atomic_store_explicit(volatile atomic_address* __a, void* __v, memory_order __m) { __a->store(__v, __m); } inline void* atomic_load(const volatile atomic_address* __a) { return __a->load(); } inline void* atomic_load_explicit(const volatile atomic_address* __a, memory_order __m) { return __a->load(__m); } inline void* atomic_exchange(volatile atomic_address* __a, void* __v) { return __a->exchange(__v); } inline void* atomic_exchange_explicit(volatile atomic_address* __a, void* __v, memory_order __m) { return __a->exchange(__v, __m); } inline bool atomic_compare_exchange_weak(volatile atomic_address* __a, void** __v1, void* __v2) { return __a->compare_exchange_weak(*__v1, __v2, memory_order_seq_cst, memory_order_seq_cst); } inline bool atomic_compare_exchange_strong(volatile atomic_address* __a, void** __v1, void* __v2) { return __a->compare_exchange_strong(*__v1, __v2, memory_order_seq_cst, memory_order_seq_cst); } inline bool atomic_compare_exchange_weak_explicit(volatile atomic_address* __a, void** __v1, void* __v2, memory_order __m1, memory_order __m2) { return __a->compare_exchange_weak(*__v1, __v2, __m1, __m2); } inline bool atomic_compare_exchange_strong_explicit(volatile atomic_address* __a, void** __v1, void* __v2, memory_order __m1, memory_order __m2) { return __a->compare_exchange_strong(*__v1, __v2, __m1, __m2); } inline void* atomic_fetch_add_explicit(volatile atomic_address* __a, ptrdiff_t __d, memory_order __m) { return __a->fetch_add(__d, __m); } inline void* atomic_fetch_add(volatile atomic_address* __a, ptrdiff_t __d) { return __a->fetch_add(__d); } inline void* atomic_fetch_sub_explicit(volatile atomic_address* __a, ptrdiff_t __d, memory_order __m) { return __a->fetch_sub(__d, __m); } inline void* atomic_fetch_sub(volatile atomic_address* __a, ptrdiff_t __d) { return __a->fetch_sub(__d); } // Convenience function definitions, atomic_bool. inline bool atomic_is_lock_free(const volatile atomic_bool* __a) { return __a->is_lock_free(); } inline void atomic_store(volatile atomic_bool* __a, bool __i) { __a->store(__i); } inline void atomic_store_explicit(volatile atomic_bool* __a, bool __i, memory_order __m) { __a->store(__i, __m); } inline bool atomic_load(const volatile atomic_bool* __a) { return __a->load(); } inline bool atomic_load_explicit(const volatile atomic_bool* __a, memory_order __m) { return __a->load(__m); } inline bool atomic_exchange(volatile atomic_bool* __a, bool __i) { return __a->exchange(__i); } inline bool atomic_exchange_explicit(volatile atomic_bool* __a, bool __i, memory_order __m) { return __a->exchange(__i, __m); } inline bool atomic_compare_exchange_weak(volatile atomic_bool* __a, bool* __i1, bool __i2) { return __a->compare_exchange_weak(*__i1, __i2, memory_order_seq_cst, memory_order_seq_cst); } inline bool atomic_compare_exchange_strong(volatile atomic_bool* __a, bool* __i1, bool __i2) { return __a->compare_exchange_strong(*__i1, __i2, memory_order_seq_cst, memory_order_seq_cst); } inline bool atomic_compare_exchange_weak_explicit(volatile atomic_bool* __a, bool* __i1, bool __i2, memory_order __m1, memory_order __m2) { return __a->compare_exchange_weak(*__i1, __i2, __m1, __m2); } inline bool atomic_compare_exchange_strong_explicit(volatile atomic_bool* __a, bool* __i1, bool __i2, memory_order __m1, memory_order __m2) { return __a->compare_exchange_strong(*__i1, __i2, __m1, __m2); } // Free standing functions. Template argument should be constricted // to intergral types as specified in the standard. template<typename _ITp> inline void atomic_store_explicit(volatile __atomic_base<_ITp>* __a, _ITp __i, memory_order __m) { __a->store(__i, __m); } template<typename _ITp> inline _ITp atomic_load_explicit(const volatile __atomic_base<_ITp>* __a, memory_order __m) { return __a->load(__m); } template<typename _ITp> inline _ITp atomic_exchange_explicit(volatile __atomic_base<_ITp>* __a, _ITp __i, memory_order __m) { return __a->exchange(__i, __m); } template<typename _ITp> inline bool atomic_compare_exchange_weak_explicit(volatile __atomic_base<_ITp>* __a, _ITp* __i1, _ITp __i2, memory_order __m1, memory_order __m2) { return __a->compare_exchange_weak(*__i1, __i2, __m1, __m2); } template<typename _ITp> inline bool atomic_compare_exchange_strong_explicit(volatile __atomic_base<_ITp>* __a, _ITp* __i1, _ITp __i2, memory_order __m1, memory_order __m2) { return __a->compare_exchange_strong(*__i1, __i2, __m1, __m2); } template<typename _ITp> inline _ITp atomic_fetch_add_explicit(volatile __atomic_base<_ITp>* __a, _ITp __i, memory_order __m) { return __a->fetch_add(__i, __m); } template<typename _ITp> inline _ITp atomic_fetch_sub_explicit(volatile __atomic_base<_ITp>* __a, _ITp __i, memory_order __m) { return __a->fetch_sub(__i, __m); } template<typename _ITp> inline _ITp atomic_fetch_and_explicit(volatile __atomic_base<_ITp>* __a, _ITp __i, memory_order __m) { return __a->fetch_and(__i, __m); } template<typename _ITp> inline _ITp atomic_fetch_or_explicit(volatile __atomic_base<_ITp>* __a, _ITp __i, memory_order __m) { return __a->fetch_or(__i, __m); } template<typename _ITp> inline _ITp atomic_fetch_xor_explicit(volatile __atomic_base<_ITp>* __a, _ITp __i, memory_order __m) { return __a->fetch_xor(__i, __m); } template<typename _ITp> inline bool atomic_is_lock_free(const volatile __atomic_base<_ITp>* __a) { return __a->is_lock_free(); } template<typename _ITp> inline void atomic_store(volatile __atomic_base<_ITp>* __a, _ITp __i) { atomic_store_explicit(__a, __i, memory_order_seq_cst); } template<typename _ITp> inline _ITp atomic_load(const volatile __atomic_base<_ITp>* __a) { return atomic_load_explicit(__a, memory_order_seq_cst); } template<typename _ITp> inline _ITp atomic_exchange(volatile __atomic_base<_ITp>* __a, _ITp __i) { return atomic_exchange_explicit(__a, __i, memory_order_seq_cst); } template<typename _ITp> inline bool atomic_compare_exchange_weak(volatile __atomic_base<_ITp>* __a, _ITp* __i1, _ITp __i2) { return atomic_compare_exchange_weak_explicit(__a, __i1, __i2, memory_order_seq_cst, memory_order_seq_cst); } template<typename _ITp> inline bool atomic_compare_exchange_strong(volatile __atomic_base<_ITp>* __a, _ITp* __i1, _ITp __i2) { return atomic_compare_exchange_strong_explicit(__a, __i1, __i2, memory_order_seq_cst, memory_order_seq_cst); } template<typename _ITp> inline _ITp atomic_fetch_add(volatile __atomic_base<_ITp>* __a, _ITp __i) { return atomic_fetch_add_explicit(__a, __i, memory_order_seq_cst); } template<typename _ITp> inline _ITp atomic_fetch_sub(volatile __atomic_base<_ITp>* __a, _ITp __i) { return atomic_fetch_sub_explicit(__a, __i, memory_order_seq_cst); } template<typename _ITp> inline _ITp atomic_fetch_and(volatile __atomic_base<_ITp>* __a, _ITp __i) { return atomic_fetch_and_explicit(__a, __i, memory_order_seq_cst); } template<typename _ITp> inline _ITp atomic_fetch_or(volatile __atomic_base<_ITp>* __a, _ITp __i) { return atomic_fetch_or_explicit(__a, __i, memory_order_seq_cst); } template<typename _ITp> inline _ITp atomic_fetch_xor(volatile __atomic_base<_ITp>* __a, _ITp __i) { return atomic_fetch_xor_explicit(__a, __i, memory_order_seq_cst); } // @} group atomics _GLIBCXX_END_NAMESPACE #endif
Save
cmd:
run