/// atomic_flag
struct atomic_flag : public __atomic_flag_base
{
- atomic_flag() = default;
- ~atomic_flag() = default;
+ atomic_flag() noexcept = default;
+ ~atomic_flag() noexcept = default;
atomic_flag(const atomic_flag&) = delete;
atomic_flag& operator=(const atomic_flag&) = delete;
atomic_flag& operator=(const atomic_flag&) volatile = delete;
// Conversion to ATOMIC_FLAG_INIT.
- atomic_flag(bool __i): __atomic_flag_base({ __i }) { }
+ atomic_flag(bool __i) noexcept : __atomic_flag_base({ __i }) { }
bool
- test_and_set(memory_order __m = memory_order_seq_cst);
+ test_and_set(memory_order __m = memory_order_seq_cst) noexcept;
bool
- test_and_set(memory_order __m = memory_order_seq_cst) volatile;
+ test_and_set(memory_order __m = memory_order_seq_cst) volatile noexcept;
void
- clear(memory_order __m = memory_order_seq_cst);
+ clear(memory_order __m = memory_order_seq_cst) noexcept;
void
- clear(memory_order __m = memory_order_seq_cst) volatile;
+ clear(memory_order __m = memory_order_seq_cst) volatile noexcept;
};
__int_type _M_i;
public:
- __atomic_base() = default;
- ~__atomic_base() = default;
+ __atomic_base() noexcept = default;
+ ~__atomic_base() noexcept = default;
__atomic_base(const __atomic_base&) = delete;
__atomic_base& operator=(const __atomic_base&) = delete;
__atomic_base& operator=(const __atomic_base&) volatile = delete;
// Requires __int_type convertible to _M_base._M_i.
- constexpr __atomic_base(__int_type __i): _M_i (__i) { }
+ constexpr __atomic_base(__int_type __i) noexcept : _M_i (__i) { }
- operator __int_type() const
+ operator __int_type() const noexcept
{ return load(); }
- operator __int_type() const volatile
+ operator __int_type() const volatile noexcept
{ return load(); }
__int_type
- operator=(__int_type __i)
+ operator=(__int_type __i) noexcept
{
store(__i);
return __i;
}
__int_type
- operator=(__int_type __i) volatile
+ operator=(__int_type __i) volatile noexcept
{
store(__i);
return __i;
}
__int_type
- operator++(int)
+ operator++(int) noexcept
{ return fetch_add(1); }
__int_type
- operator++(int) volatile
+ operator++(int) volatile noexcept
{ return fetch_add(1); }
__int_type
- operator--(int)
+ operator--(int) noexcept
{ return fetch_sub(1); }
__int_type
- operator--(int) volatile
+ operator--(int) volatile noexcept
{ return fetch_sub(1); }
__int_type
- operator++()
+ operator++() noexcept
{ return fetch_add(1) + 1; }
__int_type
- operator++() volatile
+ operator++() volatile noexcept
{ return fetch_add(1) + 1; }
__int_type
- operator--()
+ operator--() noexcept
{ return fetch_sub(1) - 1; }
__int_type
- operator--() volatile
+ operator--() volatile noexcept
{ return fetch_sub(1) - 1; }
__int_type
- operator+=(__int_type __i)
+ operator+=(__int_type __i) noexcept
{ return fetch_add(__i) + __i; }
__int_type
- operator+=(__int_type __i) volatile
+ operator+=(__int_type __i) volatile noexcept
{ return fetch_add(__i) + __i; }
__int_type
- operator-=(__int_type __i)
+ operator-=(__int_type __i) noexcept
{ return fetch_sub(__i) - __i; }
__int_type
- operator-=(__int_type __i) volatile
+ operator-=(__int_type __i) volatile noexcept
{ return fetch_sub(__i) - __i; }
__int_type
- operator&=(__int_type __i)
+ operator&=(__int_type __i) noexcept
{ return fetch_and(__i) & __i; }
__int_type
- operator&=(__int_type __i) volatile
+ operator&=(__int_type __i) volatile noexcept
{ return fetch_and(__i) & __i; }
__int_type
- operator|=(__int_type __i)
+ operator|=(__int_type __i) noexcept
{ return fetch_or(__i) | __i; }
__int_type
- operator|=(__int_type __i) volatile
+ operator|=(__int_type __i) volatile noexcept
{ return fetch_or(__i) | __i; }
__int_type
- operator^=(__int_type __i)
+ operator^=(__int_type __i) noexcept
{ return fetch_xor(__i) ^ __i; }
__int_type
- operator^=(__int_type __i) volatile
+ operator^=(__int_type __i) volatile noexcept
{ return fetch_xor(__i) ^ __i; }
bool
- is_lock_free() const
+ is_lock_free() const noexcept
{ return false; }
bool
- is_lock_free() const volatile
+ is_lock_free() const volatile noexcept
{ return false; }
void
- store(__int_type __i, memory_order __m = memory_order_seq_cst)
+ store(__int_type __i, memory_order __m = memory_order_seq_cst) noexcept
{
__glibcxx_assert(__m != memory_order_acquire);
__glibcxx_assert(__m != memory_order_acq_rel);
}
void
- store(__int_type __i, memory_order __m = memory_order_seq_cst) volatile
+ store(__int_type __i,
+ memory_order __m = memory_order_seq_cst) volatile noexcept
{
__glibcxx_assert(__m != memory_order_acquire);
__glibcxx_assert(__m != memory_order_acq_rel);
}
__int_type
- load(memory_order __m = memory_order_seq_cst) const
+ load(memory_order __m = memory_order_seq_cst) const noexcept
{
__glibcxx_assert(__m != memory_order_release);
__glibcxx_assert(__m != memory_order_acq_rel);
}
__int_type
- load(memory_order __m = memory_order_seq_cst) const volatile
+ load(memory_order __m = memory_order_seq_cst) const volatile noexcept
{
__glibcxx_assert(__m != memory_order_release);
__glibcxx_assert(__m != memory_order_acq_rel);
}
__int_type
- exchange(__int_type __i, memory_order __m = memory_order_seq_cst)
+ exchange(__int_type __i,
+ memory_order __m = memory_order_seq_cst) noexcept
{ return _ATOMIC_MODIFY_(this, =, __i, __m); }
__int_type
- exchange(__int_type __i, memory_order __m = memory_order_seq_cst) volatile
+ exchange(__int_type __i,
+ memory_order __m = memory_order_seq_cst) volatile noexcept
{ return _ATOMIC_MODIFY_(this, =, __i, __m); }
bool
compare_exchange_weak(__int_type& __i1, __int_type __i2,
- memory_order __m1, memory_order __m2)
+ memory_order __m1, memory_order __m2) noexcept
{
__glibcxx_assert(__m2 != memory_order_release);
__glibcxx_assert(__m2 != memory_order_acq_rel);
bool
compare_exchange_weak(__int_type& __i1, __int_type __i2,
- memory_order __m1, memory_order __m2) volatile
+ memory_order __m1,
+ memory_order __m2) volatile noexcept
{
__glibcxx_assert(__m2 != memory_order_release);
__glibcxx_assert(__m2 != memory_order_acq_rel);
bool
compare_exchange_weak(__int_type& __i1, __int_type __i2,
- memory_order __m = memory_order_seq_cst)
+ memory_order __m = memory_order_seq_cst) noexcept
{
return compare_exchange_weak(__i1, __i2, __m,
__calculate_memory_order(__m));
bool
compare_exchange_weak(__int_type& __i1, __int_type __i2,
- memory_order __m = memory_order_seq_cst) volatile
+ memory_order __m = memory_order_seq_cst) volatile noexcept
{
return compare_exchange_weak(__i1, __i2, __m,
__calculate_memory_order(__m));
bool
compare_exchange_strong(__int_type& __i1, __int_type __i2,
- memory_order __m1, memory_order __m2)
+ memory_order __m1, memory_order __m2) noexcept
{
__glibcxx_assert(__m2 != memory_order_release);
__glibcxx_assert(__m2 != memory_order_acq_rel);
bool
compare_exchange_strong(__int_type& __i1, __int_type __i2,
- memory_order __m1, memory_order __m2) volatile
+ memory_order __m1,
+ memory_order __m2) volatile noexcept
{
__glibcxx_assert(__m2 != memory_order_release);
__glibcxx_assert(__m2 != memory_order_acq_rel);
bool
compare_exchange_strong(__int_type& __i1, __int_type __i2,
- memory_order __m = memory_order_seq_cst)
+ memory_order __m = memory_order_seq_cst) noexcept
{
return compare_exchange_strong(__i1, __i2, __m,
__calculate_memory_order(__m));
bool
compare_exchange_strong(__int_type& __i1, __int_type __i2,
- memory_order __m = memory_order_seq_cst) volatile
+ memory_order __m = memory_order_seq_cst) volatile noexcept
{
return compare_exchange_strong(__i1, __i2, __m,
__calculate_memory_order(__m));
}
__int_type
- fetch_add(__int_type __i, memory_order __m = memory_order_seq_cst)
+ fetch_add(__int_type __i,
+ memory_order __m = memory_order_seq_cst) noexcept
{ return _ATOMIC_MODIFY_(this, +=, __i, __m); }
__int_type
fetch_add(__int_type __i,
- memory_order __m = memory_order_seq_cst) volatile
+ memory_order __m = memory_order_seq_cst) volatile noexcept
{ return _ATOMIC_MODIFY_(this, +=, __i, __m); }
__int_type
- fetch_sub(__int_type __i, memory_order __m = memory_order_seq_cst)
+ fetch_sub(__int_type __i,
+ memory_order __m = memory_order_seq_cst) noexcept
{ return _ATOMIC_MODIFY_(this, -=, __i, __m); }
__int_type
fetch_sub(__int_type __i,
- memory_order __m = memory_order_seq_cst) volatile
+ memory_order __m = memory_order_seq_cst) volatile noexcept
{ return _ATOMIC_MODIFY_(this, -=, __i, __m); }
__int_type
- fetch_and(__int_type __i, memory_order __m = memory_order_seq_cst)
+ fetch_and(__int_type __i,
+ memory_order __m = memory_order_seq_cst) noexcept
{ return _ATOMIC_MODIFY_(this, &=, __i, __m); }
__int_type
fetch_and(__int_type __i,
- memory_order __m = memory_order_seq_cst) volatile
+ memory_order __m = memory_order_seq_cst) volatile noexcept
{ return _ATOMIC_MODIFY_(this, &=, __i, __m); }
__int_type
- fetch_or(__int_type __i, memory_order __m = memory_order_seq_cst)
+ fetch_or(__int_type __i,
+ memory_order __m = memory_order_seq_cst) noexcept
{ return _ATOMIC_MODIFY_(this, |=, __i, __m); }
__int_type
- fetch_or(__int_type __i, memory_order __m = memory_order_seq_cst) volatile
+ fetch_or(__int_type __i,
+ memory_order __m = memory_order_seq_cst) volatile noexcept
{ return _ATOMIC_MODIFY_(this, |=, __i, __m); }
__int_type
- fetch_xor(__int_type __i, memory_order __m = memory_order_seq_cst)
+ fetch_xor(__int_type __i,
+ memory_order __m = memory_order_seq_cst) noexcept
{ return _ATOMIC_MODIFY_(this, ^=, __i, __m); }
__int_type
fetch_xor(__int_type __i,
- memory_order __m = memory_order_seq_cst) volatile
+ memory_order __m = memory_order_seq_cst) volatile noexcept
{ return _ATOMIC_MODIFY_(this, ^=, __i, __m); }
};
__pointer_type _M_i;
public:
- __atomic_base() = default;
- ~__atomic_base() = default;
+ __atomic_base() noexcept = default;
+ ~__atomic_base() noexcept = default;
__atomic_base(const __atomic_base&) = delete;
__atomic_base& operator=(const __atomic_base&) = delete;
__atomic_base& operator=(const __atomic_base&) volatile = delete;
// Requires __pointer_type convertible to _M_i.
- constexpr __atomic_base(__return_pointer_type __p): _M_i (__p) { }
+ constexpr __atomic_base(__return_pointer_type __p) noexcept
+ : _M_i (__p) { }
- operator __return_pointer_type() const
+ operator __return_pointer_type() const noexcept
{ return reinterpret_cast<__return_pointer_type>(load()); }
- operator __return_pointer_type() const volatile
+ operator __return_pointer_type() const volatile noexcept
{ return reinterpret_cast<__return_pointer_type>(load()); }
__return_pointer_type
- operator=(__pointer_type __p)
+ operator=(__pointer_type __p) noexcept
{
store(__p);
return reinterpret_cast<__return_pointer_type>(__p);
}
__return_pointer_type
- operator=(__pointer_type __p) volatile
+ operator=(__pointer_type __p) volatile noexcept
{
store(__p);
return reinterpret_cast<__return_pointer_type>(__p);
}
__return_pointer_type
- operator++(int)
+ operator++(int) noexcept
{ return reinterpret_cast<__return_pointer_type>(fetch_add(1)); }
__return_pointer_type
- operator++(int) volatile
+ operator++(int) volatile noexcept
{ return reinterpret_cast<__return_pointer_type>(fetch_add(1)); }
__return_pointer_type
- operator--(int)
+ operator--(int) noexcept
{ return reinterpret_cast<__return_pointer_type>(fetch_sub(1)); }
__return_pointer_type
- operator--(int) volatile
+ operator--(int) volatile noexcept
{ return reinterpret_cast<__return_pointer_type>(fetch_sub(1)); }
__return_pointer_type
- operator++()
+ operator++() noexcept
{ return reinterpret_cast<__return_pointer_type>(fetch_add(1) + 1); }
__return_pointer_type
- operator++() volatile
+ operator++() volatile noexcept
{ return reinterpret_cast<__return_pointer_type>(fetch_add(1) + 1); }
__return_pointer_type
- operator--()
+ operator--() noexcept
{ return reinterpret_cast<__return_pointer_type>(fetch_sub(1) - 1); }
__return_pointer_type
- operator--() volatile
+ operator--() volatile noexcept
{ return reinterpret_cast<__return_pointer_type>(fetch_sub(1) - 1); }
__return_pointer_type
- operator+=(ptrdiff_t __d)
+ operator+=(ptrdiff_t __d) noexcept
{ return reinterpret_cast<__return_pointer_type>(fetch_add(__d) + __d); }
__return_pointer_type
- operator+=(ptrdiff_t __d) volatile
+ operator+=(ptrdiff_t __d) volatile noexcept
{ return reinterpret_cast<__return_pointer_type>(fetch_add(__d) + __d); }
__return_pointer_type
- operator-=(ptrdiff_t __d)
+ operator-=(ptrdiff_t __d) noexcept
{ return reinterpret_cast<__return_pointer_type>(fetch_sub(__d) - __d); }
__return_pointer_type
- operator-=(ptrdiff_t __d) volatile
+ operator-=(ptrdiff_t __d) volatile noexcept
{ return reinterpret_cast<__return_pointer_type>(fetch_sub(__d) - __d); }
bool
- is_lock_free() const
+ is_lock_free() const noexcept
{ return true; }
bool
- is_lock_free() const volatile
+ is_lock_free() const volatile noexcept
{ return true; }
void
- store(__pointer_type __p, memory_order __m = memory_order_seq_cst)
+ store(__pointer_type __p,
+ memory_order __m = memory_order_seq_cst) noexcept
{
__glibcxx_assert(__m != memory_order_acquire);
__glibcxx_assert(__m != memory_order_acq_rel);
void
store(__pointer_type __p,
- memory_order __m = memory_order_seq_cst) volatile
+ memory_order __m = memory_order_seq_cst) volatile noexcept
{
__glibcxx_assert(__m != memory_order_acquire);
__glibcxx_assert(__m != memory_order_acq_rel);
}
__return_pointer_type
- load(memory_order __m = memory_order_seq_cst) const
+ load(memory_order __m = memory_order_seq_cst) const noexcept
{
__glibcxx_assert(__m != memory_order_release);
__glibcxx_assert(__m != memory_order_acq_rel);
}
__return_pointer_type
- load(memory_order __m = memory_order_seq_cst) const volatile
+ load(memory_order __m = memory_order_seq_cst) const volatile noexcept
{
__glibcxx_assert(__m != memory_order_release);
__glibcxx_assert(__m != memory_order_acq_rel);
}
__return_pointer_type
- exchange(__pointer_type __p, memory_order __m = memory_order_seq_cst)
+ exchange(__pointer_type __p,
+ memory_order __m = memory_order_seq_cst) noexcept
{
void* __v = _ATOMIC_MODIFY_(this, =, __p, __m);
return reinterpret_cast<__return_pointer_type>(__v);
__return_pointer_type
exchange(__pointer_type __p,
- memory_order __m = memory_order_seq_cst) volatile
+ memory_order __m = memory_order_seq_cst) volatile noexcept
{
volatile __pointer_type* __p2 = &_M_i;
__typeof__(__p) __w = (__p);
bool
compare_exchange_strong(__return_pointer_type& __rp1, __pointer_type __p2,
- memory_order __m1, memory_order __m2)
+ memory_order __m1, memory_order __m2) noexcept
{
__glibcxx_assert(__m2 != memory_order_release);
__glibcxx_assert(__m2 != memory_order_acq_rel);
bool
compare_exchange_strong(__return_pointer_type& __rp1, __pointer_type __p2,
- memory_order __m1, memory_order __m2) volatile
+ memory_order __m1,
+ memory_order __m2) volatile noexcept
{
__glibcxx_assert(__m2 != memory_order_release);
__glibcxx_assert(__m2 != memory_order_acq_rel);
}
__return_pointer_type
- fetch_add(ptrdiff_t __d, memory_order __m = memory_order_seq_cst)
+ fetch_add(ptrdiff_t __d,
+ memory_order __m = memory_order_seq_cst) noexcept
{
void* __v = _ATOMIC_MODIFY_(this, +=, __d, __m);
return reinterpret_cast<__return_pointer_type>(__v);
__return_pointer_type
fetch_add(ptrdiff_t __d,
- memory_order __m = memory_order_seq_cst) volatile
+ memory_order __m = memory_order_seq_cst) volatile noexcept
{
void* __v = _ATOMIC_MODIFY_(this, +=, __d, __m);
return reinterpret_cast<__return_pointer_type>(__v);
}
__return_pointer_type
- fetch_sub(ptrdiff_t __d, memory_order __m = memory_order_seq_cst)
+ fetch_sub(ptrdiff_t __d,
+ memory_order __m = memory_order_seq_cst) noexcept
{
void* __v = _ATOMIC_MODIFY_(this, -=, __d, __m);
return reinterpret_cast<__return_pointer_type>(__v);
__return_pointer_type
fetch_sub(ptrdiff_t __d,
- memory_order __m = memory_order_seq_cst) volatile
+ memory_order __m = memory_order_seq_cst) volatile noexcept
{
void* __v = _ATOMIC_MODIFY_(this, -=, __d, __m);
return reinterpret_cast<__return_pointer_type>(__v);
/// atomic_flag
struct atomic_flag : public __atomic_flag_base
{
- atomic_flag() = default;
- ~atomic_flag() = default;
+ atomic_flag() noexcept = default;
+ ~atomic_flag() noexcept = default;
atomic_flag(const atomic_flag&) = delete;
atomic_flag& operator=(const atomic_flag&) = delete;
atomic_flag& operator=(const atomic_flag&) volatile = delete;
// Conversion to ATOMIC_FLAG_INIT.
- atomic_flag(bool __i): __atomic_flag_base({ __i }) { }
+ atomic_flag(bool __i) noexcept : __atomic_flag_base({ __i }) { }
bool
- test_and_set(memory_order __m = memory_order_seq_cst)
+ test_and_set(memory_order __m = memory_order_seq_cst) noexcept
{
// Redundant synchronize if built-in for lock is a full barrier.
if (__m != memory_order_acquire && __m != memory_order_acq_rel)
}
bool
- test_and_set(memory_order __m = memory_order_seq_cst) volatile
+ test_and_set(memory_order __m = memory_order_seq_cst) volatile noexcept
{
// Redundant synchronize if built-in for lock is a full barrier.
if (__m != memory_order_acquire && __m != memory_order_acq_rel)
}
void
- clear(memory_order __m = memory_order_seq_cst)
+ clear(memory_order __m = memory_order_seq_cst) noexcept
{
__glibcxx_assert(__m != memory_order_consume);
__glibcxx_assert(__m != memory_order_acquire);
}
void
- clear(memory_order __m = memory_order_seq_cst) volatile
+ clear(memory_order __m = memory_order_seq_cst) volatile noexcept
{
__glibcxx_assert(__m != memory_order_consume);
__glibcxx_assert(__m != memory_order_acquire);
__int_type _M_i;
public:
- __atomic_base() = default;
- ~__atomic_base() = default;
+ __atomic_base() noexcept = default;
+ ~__atomic_base() noexcept = default;
__atomic_base(const __atomic_base&) = delete;
__atomic_base& operator=(const __atomic_base&) = delete;
__atomic_base& operator=(const __atomic_base&) volatile = delete;
// Requires __int_type convertible to _M_i.
- constexpr __atomic_base(__int_type __i): _M_i (__i) { }
+ constexpr __atomic_base(__int_type __i) noexcept : _M_i (__i) { }
- operator __int_type() const
+ operator __int_type() const noexcept
{ return load(); }
- operator __int_type() const volatile
+ operator __int_type() const volatile noexcept
{ return load(); }
__int_type
- operator=(__int_type __i)
+ operator=(__int_type __i) noexcept
{
store(__i);
return __i;
}
__int_type
- operator=(__int_type __i) volatile
+ operator=(__int_type __i) volatile noexcept
{
store(__i);
return __i;
}
__int_type
- operator++(int)
+ operator++(int) noexcept
{ return fetch_add(1); }
__int_type
- operator++(int) volatile
+ operator++(int) volatile noexcept
{ return fetch_add(1); }
__int_type
- operator--(int)
+ operator--(int) noexcept
{ return fetch_sub(1); }
__int_type
- operator--(int) volatile
+ operator--(int) volatile noexcept
{ return fetch_sub(1); }
__int_type
- operator++()
+ operator++() noexcept
{ return __sync_add_and_fetch(&_M_i, 1); }
__int_type
- operator++() volatile
+ operator++() volatile noexcept
{ return __sync_add_and_fetch(&_M_i, 1); }
__int_type
- operator--()
+ operator--() noexcept
{ return __sync_sub_and_fetch(&_M_i, 1); }
__int_type
- operator--() volatile
+ operator--() volatile noexcept
{ return __sync_sub_and_fetch(&_M_i, 1); }
__int_type
- operator+=(__int_type __i)
+ operator+=(__int_type __i) noexcept
{ return __sync_add_and_fetch(&_M_i, __i); }
__int_type
- operator+=(__int_type __i) volatile
+ operator+=(__int_type __i) volatile noexcept
{ return __sync_add_and_fetch(&_M_i, __i); }
__int_type
- operator-=(__int_type __i)
+ operator-=(__int_type __i) noexcept
{ return __sync_sub_and_fetch(&_M_i, __i); }
__int_type
- operator-=(__int_type __i) volatile
+ operator-=(__int_type __i) volatile noexcept
{ return __sync_sub_and_fetch(&_M_i, __i); }
__int_type
- operator&=(__int_type __i)
+ operator&=(__int_type __i) noexcept
{ return __sync_and_and_fetch(&_M_i, __i); }
__int_type
- operator&=(__int_type __i) volatile
+ operator&=(__int_type __i) volatile noexcept
{ return __sync_and_and_fetch(&_M_i, __i); }
__int_type
- operator|=(__int_type __i)
+ operator|=(__int_type __i) noexcept
{ return __sync_or_and_fetch(&_M_i, __i); }
__int_type
- operator|=(__int_type __i) volatile
+ operator|=(__int_type __i) volatile noexcept
{ return __sync_or_and_fetch(&_M_i, __i); }
__int_type
- operator^=(__int_type __i)
+ operator^=(__int_type __i) noexcept
{ return __sync_xor_and_fetch(&_M_i, __i); }
__int_type
- operator^=(__int_type __i) volatile
+ operator^=(__int_type __i) volatile noexcept
{ return __sync_xor_and_fetch(&_M_i, __i); }
bool
- is_lock_free() const
+ is_lock_free() const noexcept
{ return true; }
bool
- is_lock_free() const volatile
+ is_lock_free() const volatile noexcept
{ return true; }
void
- store(__int_type __i, memory_order __m = memory_order_seq_cst)
+ store(__int_type __i, memory_order __m = memory_order_seq_cst) noexcept
{
__glibcxx_assert(__m != memory_order_acquire);
__glibcxx_assert(__m != memory_order_acq_rel);
}
void
- store(__int_type __i, memory_order __m = memory_order_seq_cst) volatile
+ store(__int_type __i,
+ memory_order __m = memory_order_seq_cst) volatile noexcept
{
__glibcxx_assert(__m != memory_order_acquire);
__glibcxx_assert(__m != memory_order_acq_rel);
}
__int_type
- load(memory_order __m = memory_order_seq_cst) const
+ load(memory_order __m = memory_order_seq_cst) const noexcept
{
__glibcxx_assert(__m != memory_order_release);
__glibcxx_assert(__m != memory_order_acq_rel);
}
__int_type
- load(memory_order __m = memory_order_seq_cst) const volatile
+ load(memory_order __m = memory_order_seq_cst) const volatile noexcept
{
__glibcxx_assert(__m != memory_order_release);
__glibcxx_assert(__m != memory_order_acq_rel);
}
__int_type
- exchange(__int_type __i, memory_order __m = memory_order_seq_cst)
+ exchange(__int_type __i,
+ memory_order __m = memory_order_seq_cst) noexcept
{
// XXX built-in assumes memory_order_acquire.
return __sync_lock_test_and_set(&_M_i, __i);
__int_type
- exchange(__int_type __i, memory_order __m = memory_order_seq_cst) volatile
+ exchange(__int_type __i,
+ memory_order __m = memory_order_seq_cst) volatile noexcept
{
// XXX built-in assumes memory_order_acquire.
return __sync_lock_test_and_set(&_M_i, __i);
bool
compare_exchange_weak(__int_type& __i1, __int_type __i2,
- memory_order __m1, memory_order __m2)
+ memory_order __m1, memory_order __m2) noexcept
{ return compare_exchange_strong(__i1, __i2, __m1, __m2); }
bool
compare_exchange_weak(__int_type& __i1, __int_type __i2,
- memory_order __m1, memory_order __m2) volatile
+ memory_order __m1,
+ memory_order __m2) volatile noexcept
{ return compare_exchange_strong(__i1, __i2, __m1, __m2); }
bool
compare_exchange_weak(__int_type& __i1, __int_type __i2,
- memory_order __m = memory_order_seq_cst)
+ memory_order __m = memory_order_seq_cst) noexcept
{
return compare_exchange_weak(__i1, __i2, __m,
__calculate_memory_order(__m));
bool
compare_exchange_weak(__int_type& __i1, __int_type __i2,
- memory_order __m = memory_order_seq_cst) volatile
+ memory_order __m = memory_order_seq_cst) volatile noexcept
{
return compare_exchange_weak(__i1, __i2, __m,
__calculate_memory_order(__m));
bool
compare_exchange_strong(__int_type& __i1, __int_type __i2,
- memory_order __m1, memory_order __m2)
+ memory_order __m1, memory_order __m2) noexcept
{
__glibcxx_assert(__m2 != memory_order_release);
__glibcxx_assert(__m2 != memory_order_acq_rel);
bool
compare_exchange_strong(__int_type& __i1, __int_type __i2,
- memory_order __m1, memory_order __m2) volatile
+ memory_order __m1,
+ memory_order __m2) volatile noexcept
{
__glibcxx_assert(__m2 != memory_order_release);
__glibcxx_assert(__m2 != memory_order_acq_rel);
bool
compare_exchange_strong(__int_type& __i1, __int_type __i2,
- memory_order __m = memory_order_seq_cst)
+ memory_order __m = memory_order_seq_cst) noexcept
{
return compare_exchange_strong(__i1, __i2, __m,
__calculate_memory_order(__m));
bool
compare_exchange_strong(__int_type& __i1, __int_type __i2,
- memory_order __m = memory_order_seq_cst) volatile
+ memory_order __m = memory_order_seq_cst) volatile noexcept
{
return compare_exchange_strong(__i1, __i2, __m,
__calculate_memory_order(__m));
}
__int_type
- fetch_add(__int_type __i, memory_order __m = memory_order_seq_cst)
+ fetch_add(__int_type __i,
+ memory_order __m = memory_order_seq_cst) noexcept
{ return __sync_fetch_and_add(&_M_i, __i); }
__int_type
fetch_add(__int_type __i,
- memory_order __m = memory_order_seq_cst) volatile
+ memory_order __m = memory_order_seq_cst) volatile noexcept
{ return __sync_fetch_and_add(&_M_i, __i); }
__int_type
- fetch_sub(__int_type __i, memory_order __m = memory_order_seq_cst)
+ fetch_sub(__int_type __i,
+ memory_order __m = memory_order_seq_cst) noexcept
{ return __sync_fetch_and_sub(&_M_i, __i); }
__int_type
fetch_sub(__int_type __i,
- memory_order __m = memory_order_seq_cst) volatile
+ memory_order __m = memory_order_seq_cst) volatile noexcept
{ return __sync_fetch_and_sub(&_M_i, __i); }
__int_type
- fetch_and(__int_type __i, memory_order __m = memory_order_seq_cst)
+ fetch_and(__int_type __i,
+ memory_order __m = memory_order_seq_cst) noexcept
{ return __sync_fetch_and_and(&_M_i, __i); }
__int_type
fetch_and(__int_type __i,
- memory_order __m = memory_order_seq_cst) volatile
+ memory_order __m = memory_order_seq_cst) volatile noexcept
{ return __sync_fetch_and_and(&_M_i, __i); }
__int_type
- fetch_or(__int_type __i, memory_order __m = memory_order_seq_cst)
+ fetch_or(__int_type __i,
+ memory_order __m = memory_order_seq_cst) noexcept
{ return __sync_fetch_and_or(&_M_i, __i); }
__int_type
fetch_or(__int_type __i,
- memory_order __m = memory_order_seq_cst) volatile
+ memory_order __m = memory_order_seq_cst) volatile noexcept
{ return __sync_fetch_and_or(&_M_i, __i); }
__int_type
- fetch_xor(__int_type __i, memory_order __m = memory_order_seq_cst)
+ fetch_xor(__int_type __i,
+ memory_order __m = memory_order_seq_cst) noexcept
{ return __sync_fetch_and_xor(&_M_i, __i); }
__int_type
fetch_xor(__int_type __i,
- memory_order __m = memory_order_seq_cst) volatile
+ memory_order __m = memory_order_seq_cst) volatile noexcept
{ return __sync_fetch_and_xor(&_M_i, __i); }
};
__pointer_type _M_p;
public:
- __atomic_base() = default;
- ~__atomic_base() = default;
+ __atomic_base() noexcept = default;
+ ~__atomic_base() noexcept = default;
__atomic_base(const __atomic_base&) = delete;
__atomic_base& operator=(const __atomic_base&) = delete;
__atomic_base& operator=(const __atomic_base&) volatile = delete;
// Requires __pointer_type convertible to _M_p.
- constexpr __atomic_base(__pointer_type __p): _M_p (__p) { }
+ constexpr __atomic_base(__pointer_type __p) noexcept : _M_p (__p) { }
- operator __pointer_type() const
+ operator __pointer_type() const noexcept
{ return load(); }
- operator __pointer_type() const volatile
+ operator __pointer_type() const volatile noexcept
{ return load(); }
__pointer_type
- operator=(__pointer_type __p)
+ operator=(__pointer_type __p) noexcept
{
store(__p);
return __p;
}
__pointer_type
- operator=(__pointer_type __p) volatile
+ operator=(__pointer_type __p) volatile noexcept
{
store(__p);
return __p;
}
__pointer_type
- operator++(int)
+ operator++(int) noexcept
{ return fetch_add(1); }
__pointer_type
- operator++(int) volatile
+ operator++(int) volatile noexcept
{ return fetch_add(1); }
__pointer_type
- operator--(int)
+ operator--(int) noexcept
{ return fetch_sub(1); }
__pointer_type
- operator--(int) volatile
+ operator--(int) volatile noexcept
{ return fetch_sub(1); }
__pointer_type
- operator++()
+ operator++() noexcept
{ return fetch_add(1) + 1; }
__pointer_type
- operator++() volatile
+ operator++() volatile noexcept
{ return fetch_add(1) + 1; }
__pointer_type
- operator--()
+ operator--() noexcept
{ return fetch_sub(1) -1; }
__pointer_type
- operator--() volatile
+ operator--() volatile noexcept
{ return fetch_sub(1) -1; }
__pointer_type
- operator+=(ptrdiff_t __d)
+ operator+=(ptrdiff_t __d) noexcept
{ return fetch_add(__d) + __d; }
__pointer_type
- operator+=(ptrdiff_t __d) volatile
+ operator+=(ptrdiff_t __d) volatile noexcept
{ return fetch_add(__d) + __d; }
__pointer_type
- operator-=(ptrdiff_t __d)
+ operator-=(ptrdiff_t __d) noexcept
{ return fetch_sub(__d) - __d; }
__pointer_type
- operator-=(ptrdiff_t __d) volatile
+ operator-=(ptrdiff_t __d) volatile noexcept
{ return fetch_sub(__d) - __d; }
bool
- is_lock_free() const
+ is_lock_free() const noexcept
{ return true; }
bool
- is_lock_free() const volatile
+ is_lock_free() const volatile noexcept
{ return true; }
void
- store(__pointer_type __p, memory_order __m = memory_order_seq_cst)
+ store(__pointer_type __p,
+ memory_order __m = memory_order_seq_cst) noexcept
{
__glibcxx_assert(__m != memory_order_acquire);
__glibcxx_assert(__m != memory_order_acq_rel);
void
store(__pointer_type __p,
- memory_order __m = memory_order_seq_cst) volatile
+ memory_order __m = memory_order_seq_cst) volatile noexcept
{
__glibcxx_assert(__m != memory_order_acquire);
__glibcxx_assert(__m != memory_order_acq_rel);
}
__pointer_type
- load(memory_order __m = memory_order_seq_cst) const
+ load(memory_order __m = memory_order_seq_cst) const noexcept
{
__glibcxx_assert(__m != memory_order_release);
__glibcxx_assert(__m != memory_order_acq_rel);
}
__pointer_type
- load(memory_order __m = memory_order_seq_cst) const volatile
+ load(memory_order __m = memory_order_seq_cst) const volatile noexcept
{
__glibcxx_assert(__m != memory_order_release);
__glibcxx_assert(__m != memory_order_acq_rel);
}
__pointer_type
- exchange(__pointer_type __p, memory_order __m = memory_order_seq_cst)
+ exchange(__pointer_type __p,
+ memory_order __m = memory_order_seq_cst) noexcept
{
// XXX built-in assumes memory_order_acquire.
return __sync_lock_test_and_set(&_M_p, __p);
__pointer_type
exchange(__pointer_type __p,
- memory_order __m = memory_order_seq_cst) volatile
+ memory_order __m = memory_order_seq_cst) volatile noexcept
{
// XXX built-in assumes memory_order_acquire.
return __sync_lock_test_and_set(&_M_p, __p);
bool
compare_exchange_strong(__pointer_type& __p1, __pointer_type __p2,
- memory_order __m1, memory_order __m2)
+ memory_order __m1,
+ memory_order __m2) noexcept
{
__glibcxx_assert(__m2 != memory_order_release);
__glibcxx_assert(__m2 != memory_order_acq_rel);
bool
compare_exchange_strong(__pointer_type& __p1, __pointer_type __p2,
- memory_order __m1, memory_order __m2) volatile
+ memory_order __m1,
+ memory_order __m2) volatile noexcept
{
__glibcxx_assert(__m2 != memory_order_release);
__glibcxx_assert(__m2 != memory_order_acq_rel);
}
__pointer_type
- fetch_add(ptrdiff_t __d, memory_order __m = memory_order_seq_cst)
+ fetch_add(ptrdiff_t __d,
+ memory_order __m = memory_order_seq_cst) noexcept
{ return __sync_fetch_and_add(&_M_p, __d); }
__pointer_type
fetch_add(ptrdiff_t __d,
- memory_order __m = memory_order_seq_cst) volatile
+ memory_order __m = memory_order_seq_cst) volatile noexcept
{ return __sync_fetch_and_add(&_M_p, __d); }
__pointer_type
- fetch_sub(ptrdiff_t __d, memory_order __m = memory_order_seq_cst)
+ fetch_sub(ptrdiff_t __d,
+ memory_order __m = memory_order_seq_cst) noexcept
{ return __sync_fetch_and_sub(&_M_p, __d); }
__pointer_type
fetch_sub(ptrdiff_t __d,
- memory_order __m = memory_order_seq_cst) volatile
+ memory_order __m = memory_order_seq_cst) volatile noexcept
{ return __sync_fetch_and_sub(&_M_p, __d); }
};
__atomic_base<bool> _M_base;
public:
- atomic_bool() = default;
- ~atomic_bool() = default;
+ atomic_bool() noexcept = default;
+ ~atomic_bool() noexcept = default;
atomic_bool(const atomic_bool&) = delete;
atomic_bool& operator=(const atomic_bool&) = delete;
atomic_bool& operator=(const atomic_bool&) volatile = delete;
- constexpr atomic_bool(bool __i) : _M_base(__i) { }
+ constexpr atomic_bool(bool __i) noexcept : _M_base(__i) { }
bool
- operator=(bool __i)
+ operator=(bool __i) noexcept
{ return _M_base.operator=(__i); }
- operator bool() const
+ operator bool() const noexcept
{ return _M_base.load(); }
- operator bool() const volatile
+ operator bool() const volatile noexcept
{ return _M_base.load(); }
bool
- is_lock_free() const { return _M_base.is_lock_free(); }
+ is_lock_free() const noexcept { return _M_base.is_lock_free(); }
bool
- is_lock_free() const volatile { return _M_base.is_lock_free(); }
+ is_lock_free() const volatile noexcept { return _M_base.is_lock_free(); }
void
- store(bool __i, memory_order __m = memory_order_seq_cst)
+ store(bool __i, memory_order __m = memory_order_seq_cst) noexcept
{ _M_base.store(__i, __m); }
void
- store(bool __i, memory_order __m = memory_order_seq_cst) volatile
+ store(bool __i, memory_order __m = memory_order_seq_cst) volatile noexcept
{ _M_base.store(__i, __m); }
bool
- load(memory_order __m = memory_order_seq_cst) const
+ load(memory_order __m = memory_order_seq_cst) const noexcept
{ return _M_base.load(__m); }
bool
- load(memory_order __m = memory_order_seq_cst) const volatile
+ load(memory_order __m = memory_order_seq_cst) const volatile noexcept
{ return _M_base.load(__m); }
bool
- exchange(bool __i, memory_order __m = memory_order_seq_cst)
+ exchange(bool __i, memory_order __m = memory_order_seq_cst) noexcept
{ return _M_base.exchange(__i, __m); }
bool
- exchange(bool __i, memory_order __m = memory_order_seq_cst) volatile
+ exchange(bool __i,
+ memory_order __m = memory_order_seq_cst) volatile noexcept
{ return _M_base.exchange(__i, __m); }
bool
compare_exchange_weak(bool& __i1, bool __i2, memory_order __m1,
- memory_order __m2)
+ memory_order __m2) noexcept
{ return _M_base.compare_exchange_weak(__i1, __i2, __m1, __m2); }
bool
compare_exchange_weak(bool& __i1, bool __i2, memory_order __m1,
- memory_order __m2) volatile
+ memory_order __m2) volatile noexcept
{ return _M_base.compare_exchange_weak(__i1, __i2, __m1, __m2); }
bool
compare_exchange_weak(bool& __i1, bool __i2,
- memory_order __m = memory_order_seq_cst)
+ memory_order __m = memory_order_seq_cst) noexcept
{ return _M_base.compare_exchange_weak(__i1, __i2, __m); }
bool
compare_exchange_weak(bool& __i1, bool __i2,
- memory_order __m = memory_order_seq_cst) volatile
+ memory_order __m = memory_order_seq_cst) volatile noexcept
{ return _M_base.compare_exchange_weak(__i1, __i2, __m); }
bool
compare_exchange_strong(bool& __i1, bool __i2, memory_order __m1,
- memory_order __m2)
+ memory_order __m2) noexcept
{ return _M_base.compare_exchange_strong(__i1, __i2, __m1, __m2); }
bool
compare_exchange_strong(bool& __i1, bool __i2, memory_order __m1,
- memory_order __m2) volatile
+ memory_order __m2) volatile noexcept
{ return _M_base.compare_exchange_strong(__i1, __i2, __m1, __m2); }
bool
compare_exchange_strong(bool& __i1, bool __i2,
- memory_order __m = memory_order_seq_cst)
+ memory_order __m = memory_order_seq_cst) noexcept
{ return _M_base.compare_exchange_strong(__i1, __i2, __m); }
bool
compare_exchange_strong(bool& __i1, bool __i2,
- memory_order __m = memory_order_seq_cst) volatile
+ memory_order __m = memory_order_seq_cst) volatile noexcept
{ return _M_base.compare_exchange_strong(__i1, __i2, __m); }
};
_Tp _M_i;
public:
- atomic() = default;
- ~atomic() = default;
+ atomic() noexcept = default;
+ ~atomic() noexcept = default;
atomic(const atomic&) = delete;
atomic& operator=(const atomic&) = delete;
atomic& operator=(const atomic&) volatile = delete;
- constexpr atomic(_Tp __i) : _M_i(__i) { }
+ constexpr atomic(_Tp __i) noexcept : _M_i(__i) { }
- operator _Tp() const;
+ operator _Tp() const noexcept;
- operator _Tp() const volatile;
+ operator _Tp() const volatile noexcept;
_Tp
- operator=(_Tp __i) { store(__i); return __i; }
+ operator=(_Tp __i) noexcept { store(__i); return __i; }
_Tp
- operator=(_Tp __i) volatile { store(__i); return __i; }
+ operator=(_Tp __i) volatile noexcept { store(__i); return __i; }
bool
- is_lock_free() const;
+ is_lock_free() const noexcept;
bool
- is_lock_free() const volatile;
+ is_lock_free() const volatile noexcept;
void
- store(_Tp, memory_order = memory_order_seq_cst);
+ store(_Tp, memory_order = memory_order_seq_cst) noexcept;
void
- store(_Tp, memory_order = memory_order_seq_cst) volatile;
+ store(_Tp, memory_order = memory_order_seq_cst) volatile noexcept;
_Tp
- load(memory_order = memory_order_seq_cst) const;
+ load(memory_order = memory_order_seq_cst) const noexcept;
_Tp
- load(memory_order = memory_order_seq_cst) const volatile;
+ load(memory_order = memory_order_seq_cst) const volatile noexcept;
_Tp
- exchange(_Tp __i, memory_order = memory_order_seq_cst);
+ exchange(_Tp __i, memory_order = memory_order_seq_cst) noexcept;
_Tp
- exchange(_Tp __i, memory_order = memory_order_seq_cst) volatile;
+ exchange(_Tp __i, memory_order = memory_order_seq_cst) volatile noexcept;
bool
- compare_exchange_weak(_Tp&, _Tp, memory_order, memory_order);
+ compare_exchange_weak(_Tp&, _Tp, memory_order, memory_order) noexcept;
bool
- compare_exchange_weak(_Tp&, _Tp, memory_order, memory_order) volatile;
+ compare_exchange_weak(_Tp&, _Tp, memory_order,
+ memory_order) volatile noexcept;
bool
- compare_exchange_weak(_Tp&, _Tp, memory_order = memory_order_seq_cst);
+ compare_exchange_weak(_Tp&, _Tp,
+ memory_order = memory_order_seq_cst) noexcept;
bool
compare_exchange_weak(_Tp&, _Tp,
- memory_order = memory_order_seq_cst) volatile;
+ memory_order = memory_order_seq_cst) volatile noexcept;
bool
- compare_exchange_strong(_Tp&, _Tp, memory_order, memory_order);
+ compare_exchange_strong(_Tp&, _Tp, memory_order, memory_order) noexcept;
bool
- compare_exchange_strong(_Tp&, _Tp, memory_order, memory_order) volatile;
+ compare_exchange_strong(_Tp&, _Tp, memory_order,
+ memory_order) volatile noexcept;
bool
- compare_exchange_strong(_Tp&, _Tp, memory_order = memory_order_seq_cst);
+ compare_exchange_strong(_Tp&, _Tp,
+ memory_order = memory_order_seq_cst) noexcept;
bool
compare_exchange_strong(_Tp&, _Tp,
- memory_order = memory_order_seq_cst) volatile;
+ memory_order = memory_order_seq_cst) volatile noexcept;
};
typedef __atomic_base<_Tp*> __base_type;
__base_type _M_b;
- atomic() = default;
- ~atomic() = default;
+ atomic() noexcept = default;
+ ~atomic() noexcept = default;
atomic(const atomic&) = delete;
atomic& operator=(const atomic&) = delete;
atomic& operator=(const atomic&) volatile = delete;
- constexpr atomic(__pointer_type __p) : _M_b(__p) { }
+ constexpr atomic(__pointer_type __p) noexcept : _M_b(__p) { }
- operator __pointer_type() const
+ operator __pointer_type() const noexcept
{ return __pointer_type(_M_b); }
- operator __pointer_type() const volatile
+ operator __pointer_type() const volatile noexcept
{ return __pointer_type(_M_b); }
__pointer_type
- operator=(__pointer_type __p)
+ operator=(__pointer_type __p) noexcept
{ return _M_b.operator=(__p); }
__pointer_type
- operator=(__pointer_type __p) volatile
+ operator=(__pointer_type __p) volatile noexcept
{ return _M_b.operator=(__p); }
__pointer_type
- operator++(int)
+ operator++(int) noexcept
{ return _M_b++; }
__pointer_type
- operator++(int) volatile
+ operator++(int) volatile noexcept
{ return _M_b++; }
__pointer_type
- operator--(int)
+ operator--(int) noexcept
{ return _M_b--; }
__pointer_type
- operator--(int) volatile
+ operator--(int) volatile noexcept
{ return _M_b--; }
__pointer_type
- operator++()
+ operator++() noexcept
{ return ++_M_b; }
__pointer_type
- operator++() volatile
+ operator++() volatile noexcept
{ return ++_M_b; }
__pointer_type
- operator--()
+ operator--() noexcept
{ return --_M_b; }
__pointer_type
- operator--() volatile
+ operator--() volatile noexcept
{ return --_M_b; }
__pointer_type
- operator+=(ptrdiff_t __d)
+ operator+=(ptrdiff_t __d) noexcept
{ return _M_b.operator+=(__d); }
__pointer_type
- operator+=(ptrdiff_t __d) volatile
+ operator+=(ptrdiff_t __d) volatile noexcept
{ return _M_b.operator+=(__d); }
__pointer_type
- operator-=(ptrdiff_t __d)
+ operator-=(ptrdiff_t __d) noexcept
{ return _M_b.operator-=(__d); }
__pointer_type
- operator-=(ptrdiff_t __d) volatile
+ operator-=(ptrdiff_t __d) volatile noexcept
{ return _M_b.operator-=(__d); }
bool
- is_lock_free() const
+ is_lock_free() const noexcept
{ return _M_b.is_lock_free(); }
bool
- is_lock_free() const volatile
+ is_lock_free() const volatile noexcept
{ return _M_b.is_lock_free(); }
void
- store(__pointer_type __p, memory_order __m = memory_order_seq_cst)
+ store(__pointer_type __p,
+ memory_order __m = memory_order_seq_cst) noexcept
{ return _M_b.store(__p, __m); }
void
store(__pointer_type __p,
- memory_order __m = memory_order_seq_cst) volatile
+ memory_order __m = memory_order_seq_cst) volatile noexcept
{ return _M_b.store(__p, __m); }
__pointer_type
- load(memory_order __m = memory_order_seq_cst) const
+ load(memory_order __m = memory_order_seq_cst) const noexcept
{ return _M_b.load(__m); }
__pointer_type
- load(memory_order __m = memory_order_seq_cst) const volatile
+ load(memory_order __m = memory_order_seq_cst) const volatile noexcept
{ return _M_b.load(__m); }
__pointer_type
- exchange(__pointer_type __p, memory_order __m = memory_order_seq_cst)
+ exchange(__pointer_type __p,
+ memory_order __m = memory_order_seq_cst) noexcept
{ return _M_b.exchange(__p, __m); }
__pointer_type
exchange(__pointer_type __p,
- memory_order __m = memory_order_seq_cst) volatile
+ memory_order __m = memory_order_seq_cst) volatile noexcept
{ return _M_b.exchange(__p, __m); }
bool
compare_exchange_weak(__pointer_type& __p1, __pointer_type __p2,
- memory_order __m1, memory_order __m2)
+ memory_order __m1, memory_order __m2) noexcept
{ return _M_b.compare_exchange_strong(__p1, __p2, __m1, __m2); }
bool
compare_exchange_weak(__pointer_type& __p1, __pointer_type __p2,
- memory_order __m1, memory_order __m2) volatile
+ memory_order __m1,
+ memory_order __m2) volatile noexcept
{ return _M_b.compare_exchange_strong(__p1, __p2, __m1, __m2); }
bool
compare_exchange_weak(__pointer_type& __p1, __pointer_type __p2,
- memory_order __m = memory_order_seq_cst)
+ memory_order __m = memory_order_seq_cst) noexcept
{
return compare_exchange_weak(__p1, __p2, __m,
__calculate_memory_order(__m));
bool
compare_exchange_weak(__pointer_type& __p1, __pointer_type __p2,
- memory_order __m = memory_order_seq_cst) volatile
+ memory_order __m = memory_order_seq_cst) volatile noexcept
{
return compare_exchange_weak(__p1, __p2, __m,
__calculate_memory_order(__m));
bool
compare_exchange_strong(__pointer_type& __p1, __pointer_type __p2,
- memory_order __m1, memory_order __m2)
+ memory_order __m1, memory_order __m2) noexcept
{ return _M_b.compare_exchange_strong(__p1, __p2, __m1, __m2); }
bool
compare_exchange_strong(__pointer_type& __p1, __pointer_type __p2,
- memory_order __m1, memory_order __m2) volatile
+ memory_order __m1,
+ memory_order __m2) volatile noexcept
{ return _M_b.compare_exchange_strong(__p1, __p2, __m1, __m2); }
bool
compare_exchange_strong(__pointer_type& __p1, __pointer_type __p2,
- memory_order __m = memory_order_seq_cst)
+ memory_order __m = memory_order_seq_cst) noexcept
{
return _M_b.compare_exchange_strong(__p1, __p2, __m,
__calculate_memory_order(__m));
bool
compare_exchange_strong(__pointer_type& __p1, __pointer_type __p2,
- memory_order __m = memory_order_seq_cst) volatile
+ memory_order __m = memory_order_seq_cst) volatile noexcept
{
return _M_b.compare_exchange_strong(__p1, __p2, __m,
__calculate_memory_order(__m));
}
__pointer_type
- fetch_add(ptrdiff_t __d, memory_order __m = memory_order_seq_cst)
+ fetch_add(ptrdiff_t __d,
+ memory_order __m = memory_order_seq_cst) noexcept
{ return _M_b.fetch_add(__d, __m); }
__pointer_type
fetch_add(ptrdiff_t __d,
- memory_order __m = memory_order_seq_cst) volatile
+ memory_order __m = memory_order_seq_cst) volatile noexcept
{ return _M_b.fetch_add(__d, __m); }
__pointer_type
- fetch_sub(ptrdiff_t __d, memory_order __m = memory_order_seq_cst)
+ fetch_sub(ptrdiff_t __d,
+ memory_order __m = memory_order_seq_cst) noexcept
{ return _M_b.fetch_sub(__d, __m); }
__pointer_type
fetch_sub(ptrdiff_t __d,
- memory_order __m = memory_order_seq_cst) volatile
+ memory_order __m = memory_order_seq_cst) volatile noexcept
{ return _M_b.fetch_sub(__d, __m); }
};
typedef bool __integral_type;
typedef atomic_bool __base_type;
- atomic() = default;
- ~atomic() = default;
+ atomic() noexcept = default;
+ ~atomic() noexcept = default;
atomic(const atomic&) = delete;
atomic& operator=(const atomic&) = delete;
atomic& operator=(const atomic&) volatile = delete;
- constexpr atomic(__integral_type __i) : __base_type(__i) { }
+ constexpr atomic(__integral_type __i) noexcept : __base_type(__i) { }
using __base_type::operator __integral_type;
using __base_type::operator=;
typedef char __integral_type;
typedef atomic_char __base_type;
- atomic() = default;
- ~atomic() = default;
+ atomic() noexcept = default;
+ ~atomic() noexcept = default;
atomic(const atomic&) = delete;
atomic& operator=(const atomic&) = delete;
atomic& operator=(const atomic&) volatile = delete;
- constexpr atomic(__integral_type __i) : __base_type(__i) { }
+ constexpr atomic(__integral_type __i) noexcept : __base_type(__i) { }
using __base_type::operator __integral_type;
using __base_type::operator=;
typedef signed char __integral_type;
typedef atomic_schar __base_type;
- atomic() = default;
- ~atomic() = default;
+ atomic() noexcept= default;
+ ~atomic() noexcept = default;
atomic(const atomic&) = delete;
atomic& operator=(const atomic&) = delete;
atomic& operator=(const atomic&) volatile = delete;
- constexpr atomic(__integral_type __i) : __base_type(__i) { }
+ constexpr atomic(__integral_type __i) noexcept : __base_type(__i) { }
using __base_type::operator __integral_type;
using __base_type::operator=;
typedef unsigned char __integral_type;
typedef atomic_uchar __base_type;
- atomic() = default;
- ~atomic() = default;
+ atomic() noexcept= default;
+ ~atomic() noexcept = default;
atomic(const atomic&) = delete;
atomic& operator=(const atomic&) = delete;
atomic& operator=(const atomic&) volatile = delete;
- constexpr atomic(__integral_type __i) : __base_type(__i) { }
+ constexpr atomic(__integral_type __i) noexcept : __base_type(__i) { }
using __base_type::operator __integral_type;
using __base_type::operator=;
typedef short __integral_type;
typedef atomic_short __base_type;
- atomic() = default;
- ~atomic() = default;
+ atomic() noexcept = default;
+ ~atomic() noexcept = default;
atomic(const atomic&) = delete;
atomic& operator=(const atomic&) = delete;
atomic& operator=(const atomic&) volatile = delete;
- constexpr atomic(__integral_type __i) : __base_type(__i) { }
+ constexpr atomic(__integral_type __i) noexcept : __base_type(__i) { }
using __base_type::operator __integral_type;
using __base_type::operator=;
typedef unsigned short __integral_type;
typedef atomic_ushort __base_type;
- atomic() = default;
- ~atomic() = default;
+ atomic() noexcept = default;
+ ~atomic() noexcept = default;
atomic(const atomic&) = delete;
atomic& operator=(const atomic&) = delete;
atomic& operator=(const atomic&) volatile = delete;
- constexpr atomic(__integral_type __i) : __base_type(__i) { }
+ constexpr atomic(__integral_type __i) noexcept : __base_type(__i) { }
using __base_type::operator __integral_type;
using __base_type::operator=;
typedef int __integral_type;
typedef atomic_int __base_type;
- atomic() = default;
- ~atomic() = default;
+ atomic() noexcept = default;
+ ~atomic() noexcept = default;
atomic(const atomic&) = delete;
atomic& operator=(const atomic&) = delete;
atomic& operator=(const atomic&) volatile = delete;
- constexpr atomic(__integral_type __i) : __base_type(__i) { }
+ constexpr atomic(__integral_type __i) noexcept : __base_type(__i) { }
using __base_type::operator __integral_type;
using __base_type::operator=;
typedef unsigned int __integral_type;
typedef atomic_uint __base_type;
- atomic() = default;
- ~atomic() = default;
+ atomic() noexcept = default;
+ ~atomic() noexcept = default;
atomic(const atomic&) = delete;
atomic& operator=(const atomic&) = delete;
atomic& operator=(const atomic&) volatile = delete;
- constexpr atomic(__integral_type __i) : __base_type(__i) { }
+ constexpr atomic(__integral_type __i) noexcept : __base_type(__i) { }
using __base_type::operator __integral_type;
using __base_type::operator=;
typedef long __integral_type;
typedef atomic_long __base_type;
- atomic() = default;
- ~atomic() = default;
+ atomic() noexcept = default;
+ ~atomic() noexcept = default;
atomic(const atomic&) = delete;
atomic& operator=(const atomic&) = delete;
atomic& operator=(const atomic&) volatile = delete;
- constexpr atomic(__integral_type __i) : __base_type(__i) { }
+ constexpr atomic(__integral_type __i) noexcept : __base_type(__i) { }
using __base_type::operator __integral_type;
using __base_type::operator=;
typedef unsigned long __integral_type;
typedef atomic_ulong __base_type;
- atomic() = default;
- ~atomic() = default;
+ atomic() noexcept = default;
+ ~atomic() noexcept = default;
atomic(const atomic&) = delete;
atomic& operator=(const atomic&) = delete;
atomic& operator=(const atomic&) volatile = delete;
- constexpr atomic(__integral_type __i) : __base_type(__i) { }
+ constexpr atomic(__integral_type __i) noexcept : __base_type(__i) { }
using __base_type::operator __integral_type;
using __base_type::operator=;
typedef long long __integral_type;
typedef atomic_llong __base_type;
- atomic() = default;
- ~atomic() = default;
+ atomic() noexcept = default;
+ ~atomic() noexcept = default;
atomic(const atomic&) = delete;
atomic& operator=(const atomic&) = delete;
atomic& operator=(const atomic&) volatile = delete;
- constexpr atomic(__integral_type __i) : __base_type(__i) { }
+ constexpr atomic(__integral_type __i) noexcept : __base_type(__i) { }
using __base_type::operator __integral_type;
using __base_type::operator=;
typedef unsigned long long __integral_type;
typedef atomic_ullong __base_type;
- atomic() = default;
- ~atomic() = default;
+ atomic() noexcept = default;
+ ~atomic() noexcept = default;
atomic(const atomic&) = delete;
atomic& operator=(const atomic&) = delete;
atomic& operator=(const atomic&) volatile = delete;
- constexpr atomic(__integral_type __i) : __base_type(__i) { }
+ constexpr atomic(__integral_type __i) noexcept : __base_type(__i) { }
using __base_type::operator __integral_type;
using __base_type::operator=;
typedef wchar_t __integral_type;
typedef atomic_wchar_t __base_type;
- atomic() = default;
- ~atomic() = default;
+ atomic() noexcept = default;
+ ~atomic() noexcept = default;
atomic(const atomic&) = delete;
atomic& operator=(const atomic&) = delete;
atomic& operator=(const atomic&) volatile = delete;
- constexpr atomic(__integral_type __i) : __base_type(__i) { }
+ constexpr atomic(__integral_type __i) noexcept : __base_type(__i) { }
using __base_type::operator __integral_type;
using __base_type::operator=;
typedef char16_t __integral_type;
typedef atomic_char16_t __base_type;
- atomic() = default;
- ~atomic() = default;
+ atomic() noexcept = default;
+ ~atomic() noexcept = default;
atomic(const atomic&) = delete;
atomic& operator=(const atomic&) = delete;
atomic& operator=(const atomic&) volatile = delete;
- constexpr atomic(__integral_type __i) : __base_type(__i) { }
+ constexpr atomic(__integral_type __i) noexcept : __base_type(__i) { }
using __base_type::operator __integral_type;
using __base_type::operator=;
typedef char32_t __integral_type;
typedef atomic_char32_t __base_type;
- atomic() = default;
- ~atomic() = default;
+ atomic() noexcept = default;
+ ~atomic() noexcept = default;
atomic(const atomic&) = delete;
atomic& operator=(const atomic&) = delete;
atomic& operator=(const atomic&) volatile = delete;
- constexpr atomic(__integral_type __i) : __base_type(__i) { }
+ constexpr atomic(__integral_type __i) noexcept : __base_type(__i) { }
using __base_type::operator __integral_type;
using __base_type::operator=;
// Function definitions, atomic_flag operations.
inline bool
- atomic_flag_test_and_set_explicit(atomic_flag* __a, memory_order __m)
+ atomic_flag_test_and_set_explicit(atomic_flag* __a,
+ memory_order __m) noexcept
{ return __a->test_and_set(__m); }
inline bool
atomic_flag_test_and_set_explicit(volatile atomic_flag* __a,
- memory_order __m)
+ memory_order __m) noexcept
{ return __a->test_and_set(__m); }
inline void
- atomic_flag_clear_explicit(atomic_flag* __a, memory_order __m)
+ atomic_flag_clear_explicit(atomic_flag* __a, memory_order __m) noexcept
{ __a->clear(__m); }
inline void
- atomic_flag_clear_explicit(volatile atomic_flag* __a, memory_order __m)
+ atomic_flag_clear_explicit(volatile atomic_flag* __a,
+ memory_order __m) noexcept
{ __a->clear(__m); }
inline bool
- atomic_flag_test_and_set(atomic_flag* __a)
+ atomic_flag_test_and_set(atomic_flag* __a) noexcept
{ return atomic_flag_test_and_set_explicit(__a, memory_order_seq_cst); }
inline bool
- atomic_flag_test_and_set(volatile atomic_flag* __a)
+ atomic_flag_test_and_set(volatile atomic_flag* __a) noexcept
{ return atomic_flag_test_and_set_explicit(__a, memory_order_seq_cst); }
inline void
- atomic_flag_clear(atomic_flag* __a)
+ atomic_flag_clear(atomic_flag* __a) noexcept
{ atomic_flag_clear_explicit(__a, memory_order_seq_cst); }
inline void
- atomic_flag_clear(volatile atomic_flag* __a)
+ atomic_flag_clear(volatile atomic_flag* __a) noexcept
{ atomic_flag_clear_explicit(__a, memory_order_seq_cst); }
// Function templates generally applicable to atomic types.
template<typename _ITp>
inline bool
- atomic_is_lock_free(const atomic<_ITp>* __a)
+ atomic_is_lock_free(const atomic<_ITp>* __a) noexcept
{ return __a->is_lock_free(); }
template<typename _ITp>
inline bool
- atomic_is_lock_free(const volatile atomic<_ITp>* __a)
+ atomic_is_lock_free(const volatile atomic<_ITp>* __a) noexcept
{ return __a->is_lock_free(); }
template<typename _ITp>
inline void
- atomic_init(atomic<_ITp>* __a, _ITp __i);
+ atomic_init(atomic<_ITp>* __a, _ITp __i) noexcept;
template<typename _ITp>
inline void
- atomic_init(volatile atomic<_ITp>* __a, _ITp __i);
+ atomic_init(volatile atomic<_ITp>* __a, _ITp __i) noexcept;
template<typename _ITp>
inline void
- atomic_store_explicit(atomic<_ITp>* __a, _ITp __i, memory_order __m)
+ atomic_store_explicit(atomic<_ITp>* __a, _ITp __i,
+ memory_order __m) noexcept
{ __a->store(__i, __m); }
template<typename _ITp>
inline void
atomic_store_explicit(volatile atomic<_ITp>* __a, _ITp __i,
- memory_order __m)
+ memory_order __m) noexcept
{ __a->store(__i, __m); }
template<typename _ITp>
inline _ITp
- atomic_load_explicit(const atomic<_ITp>* __a, memory_order __m)
+ atomic_load_explicit(const atomic<_ITp>* __a, memory_order __m) noexcept
{ return __a->load(__m); }
template<typename _ITp>
inline _ITp
atomic_load_explicit(const volatile atomic<_ITp>* __a,
- memory_order __m)
+ memory_order __m) noexcept
{ return __a->load(__m); }
template<typename _ITp>
inline _ITp
atomic_exchange_explicit(atomic<_ITp>* __a, _ITp __i,
- memory_order __m)
+ memory_order __m) noexcept
{ return __a->exchange(__i, __m); }
template<typename _ITp>
inline _ITp
atomic_exchange_explicit(volatile atomic<_ITp>* __a, _ITp __i,
- memory_order __m)
+ memory_order __m) noexcept
{ return __a->exchange(__i, __m); }
template<typename _ITp>
inline bool
atomic_compare_exchange_weak_explicit(atomic<_ITp>* __a,
_ITp* __i1, _ITp __i2,
- memory_order __m1, memory_order __m2)
+ memory_order __m1,
+ memory_order __m2) noexcept
{ return __a->compare_exchange_weak(*__i1, __i2, __m1, __m2); }
template<typename _ITp>
inline bool
atomic_compare_exchange_weak_explicit(volatile atomic<_ITp>* __a,
_ITp* __i1, _ITp __i2,
- memory_order __m1, memory_order __m2)
+ memory_order __m1,
+ memory_order __m2) noexcept
{ return __a->compare_exchange_weak(*__i1, __i2, __m1, __m2); }
template<typename _ITp>
atomic_compare_exchange_strong_explicit(atomic<_ITp>* __a,
_ITp* __i1, _ITp __i2,
memory_order __m1,
- memory_order __m2)
+ memory_order __m2) noexcept
{ return __a->compare_exchange_strong(*__i1, __i2, __m1, __m2); }
template<typename _ITp>
atomic_compare_exchange_strong_explicit(volatile atomic<_ITp>* __a,
_ITp* __i1, _ITp __i2,
memory_order __m1,
- memory_order __m2)
+ memory_order __m2) noexcept
{ return __a->compare_exchange_strong(*__i1, __i2, __m1, __m2); }
template<typename _ITp>
inline void
- atomic_store(atomic<_ITp>* __a, _ITp __i)
+ atomic_store(atomic<_ITp>* __a, _ITp __i) noexcept
{ atomic_store_explicit(__a, __i, memory_order_seq_cst); }
template<typename _ITp>
inline void
- atomic_store(volatile atomic<_ITp>* __a, _ITp __i)
+ atomic_store(volatile atomic<_ITp>* __a, _ITp __i) noexcept
{ atomic_store_explicit(__a, __i, memory_order_seq_cst); }
template<typename _ITp>
inline _ITp
- atomic_load(const atomic<_ITp>* __a)
+ atomic_load(const atomic<_ITp>* __a) noexcept
{ return atomic_load_explicit(__a, memory_order_seq_cst); }
template<typename _ITp>
inline _ITp
- atomic_load(const volatile atomic<_ITp>* __a)
+ atomic_load(const volatile atomic<_ITp>* __a) noexcept
{ return atomic_load_explicit(__a, memory_order_seq_cst); }
template<typename _ITp>
inline _ITp
- atomic_exchange(atomic<_ITp>* __a, _ITp __i)
+ atomic_exchange(atomic<_ITp>* __a, _ITp __i) noexcept
{ return atomic_exchange_explicit(__a, __i, memory_order_seq_cst); }
template<typename _ITp>
inline _ITp
- atomic_exchange(volatile atomic<_ITp>* __a, _ITp __i)
+ atomic_exchange(volatile atomic<_ITp>* __a, _ITp __i) noexcept
{ return atomic_exchange_explicit(__a, __i, memory_order_seq_cst); }
template<typename _ITp>
inline bool
atomic_compare_exchange_weak(atomic<_ITp>* __a,
- _ITp* __i1, _ITp __i2)
+ _ITp* __i1, _ITp __i2) noexcept
{
return atomic_compare_exchange_weak_explicit(__a, __i1, __i2,
memory_order_seq_cst,
template<typename _ITp>
inline bool
atomic_compare_exchange_weak(volatile atomic<_ITp>* __a,
- _ITp* __i1, _ITp __i2)
+ _ITp* __i1, _ITp __i2) noexcept
{
return atomic_compare_exchange_weak_explicit(__a, __i1, __i2,
memory_order_seq_cst,
template<typename _ITp>
inline bool
atomic_compare_exchange_strong(atomic<_ITp>* __a,
- _ITp* __i1, _ITp __i2)
+ _ITp* __i1, _ITp __i2) noexcept
{
return atomic_compare_exchange_strong_explicit(__a, __i1, __i2,
memory_order_seq_cst,
template<typename _ITp>
inline bool
atomic_compare_exchange_strong(volatile atomic<_ITp>* __a,
- _ITp* __i1, _ITp __i2)
+ _ITp* __i1, _ITp __i2) noexcept
{
return atomic_compare_exchange_strong_explicit(__a, __i1, __i2,
memory_order_seq_cst,
template<typename _ITp>
inline _ITp
atomic_fetch_add_explicit(__atomic_base<_ITp>* __a, _ITp __i,
- memory_order __m)
+ memory_order __m) noexcept
{ return __a->fetch_add(__i, __m); }
template<typename _ITp>
inline _ITp
atomic_fetch_add_explicit(volatile __atomic_base<_ITp>* __a, _ITp __i,
- memory_order __m)
+ memory_order __m) noexcept
{ return __a->fetch_add(__i, __m); }
template<typename _ITp>
inline _ITp
atomic_fetch_sub_explicit(__atomic_base<_ITp>* __a, _ITp __i,
- memory_order __m)
+ memory_order __m) noexcept
{ return __a->fetch_sub(__i, __m); }
template<typename _ITp>
inline _ITp
atomic_fetch_sub_explicit(volatile __atomic_base<_ITp>* __a, _ITp __i,
- memory_order __m)
+ memory_order __m) noexcept
{ return __a->fetch_sub(__i, __m); }
template<typename _ITp>
inline _ITp
atomic_fetch_and_explicit(__atomic_base<_ITp>* __a, _ITp __i,
- memory_order __m)
+ memory_order __m) noexcept
{ return __a->fetch_and(__i, __m); }
template<typename _ITp>
inline _ITp
atomic_fetch_and_explicit(volatile __atomic_base<_ITp>* __a, _ITp __i,
- memory_order __m)
+ memory_order __m) noexcept
{ return __a->fetch_and(__i, __m); }
template<typename _ITp>
inline _ITp
atomic_fetch_or_explicit(__atomic_base<_ITp>* __a, _ITp __i,
- memory_order __m)
+ memory_order __m) noexcept
{ return __a->fetch_or(__i, __m); }
template<typename _ITp>
inline _ITp
atomic_fetch_or_explicit(volatile __atomic_base<_ITp>* __a, _ITp __i,
- memory_order __m)
+ memory_order __m) noexcept
{ return __a->fetch_or(__i, __m); }
template<typename _ITp>
inline _ITp
atomic_fetch_xor_explicit(__atomic_base<_ITp>* __a, _ITp __i,
- memory_order __m)
+ memory_order __m) noexcept
{ return __a->fetch_xor(__i, __m); }
template<typename _ITp>
inline _ITp
atomic_fetch_xor_explicit(volatile __atomic_base<_ITp>* __a, _ITp __i,
- memory_order __m)
+ memory_order __m) noexcept
{ return __a->fetch_xor(__i, __m); }
template<typename _ITp>
inline _ITp
- atomic_fetch_add(__atomic_base<_ITp>* __a, _ITp __i)
+ atomic_fetch_add(__atomic_base<_ITp>* __a, _ITp __i) noexcept
{ return atomic_fetch_add_explicit(__a, __i, memory_order_seq_cst); }
template<typename _ITp>
inline _ITp
- atomic_fetch_add(volatile __atomic_base<_ITp>* __a, _ITp __i)
+ atomic_fetch_add(volatile __atomic_base<_ITp>* __a, _ITp __i) noexcept
{ return atomic_fetch_add_explicit(__a, __i, memory_order_seq_cst); }
template<typename _ITp>
inline _ITp
- atomic_fetch_sub(__atomic_base<_ITp>* __a, _ITp __i)
+ atomic_fetch_sub(__atomic_base<_ITp>* __a, _ITp __i) noexcept
{ return atomic_fetch_sub_explicit(__a, __i, memory_order_seq_cst); }
template<typename _ITp>
inline _ITp
- atomic_fetch_sub(volatile __atomic_base<_ITp>* __a, _ITp __i)
+ atomic_fetch_sub(volatile __atomic_base<_ITp>* __a, _ITp __i) noexcept
{ return atomic_fetch_sub_explicit(__a, __i, memory_order_seq_cst); }
template<typename _ITp>
inline _ITp
- atomic_fetch_and(__atomic_base<_ITp>* __a, _ITp __i)
+ atomic_fetch_and(__atomic_base<_ITp>* __a, _ITp __i) noexcept
{ return atomic_fetch_and_explicit(__a, __i, memory_order_seq_cst); }
template<typename _ITp>
inline _ITp
- atomic_fetch_and(volatile __atomic_base<_ITp>* __a, _ITp __i)
+ atomic_fetch_and(volatile __atomic_base<_ITp>* __a, _ITp __i) noexcept
{ return atomic_fetch_and_explicit(__a, __i, memory_order_seq_cst); }
template<typename _ITp>
inline _ITp
- atomic_fetch_or(__atomic_base<_ITp>* __a, _ITp __i)
+ atomic_fetch_or(__atomic_base<_ITp>* __a, _ITp __i) noexcept
{ return atomic_fetch_or_explicit(__a, __i, memory_order_seq_cst); }
template<typename _ITp>
inline _ITp
- atomic_fetch_or(volatile __atomic_base<_ITp>* __a, _ITp __i)
+ atomic_fetch_or(volatile __atomic_base<_ITp>* __a, _ITp __i) noexcept
{ return atomic_fetch_or_explicit(__a, __i, memory_order_seq_cst); }
template<typename _ITp>
inline _ITp
- atomic_fetch_xor(__atomic_base<_ITp>* __a, _ITp __i)
+ atomic_fetch_xor(__atomic_base<_ITp>* __a, _ITp __i) noexcept
{ return atomic_fetch_xor_explicit(__a, __i, memory_order_seq_cst); }
template<typename _ITp>
inline _ITp
- atomic_fetch_xor(volatile __atomic_base<_ITp>* __a, _ITp __i)
+ atomic_fetch_xor(volatile __atomic_base<_ITp>* __a, _ITp __i) noexcept
{ return atomic_fetch_xor_explicit(__a, __i, memory_order_seq_cst); }
template<typename _ITp>
inline _ITp*
atomic_fetch_add_explicit(atomic<_ITp*>* __a, ptrdiff_t __d,
- memory_order __m)
+ memory_order __m) noexcept
{ return __a->fetch_add(__d, __m); }
template<typename _ITp>
inline _ITp*
atomic_fetch_add_explicit(volatile atomic<_ITp*>* __a, ptrdiff_t __d,
- memory_order __m)
+ memory_order __m) noexcept
{ return __a->fetch_add(__d, __m); }
template<typename _ITp>
inline _ITp*
- atomic_fetch_add(volatile atomic<_ITp*>* __a, ptrdiff_t __d)
+ atomic_fetch_add(volatile atomic<_ITp*>* __a, ptrdiff_t __d) noexcept
{ return __a->fetch_add(__d); }
template<typename _ITp>
inline _ITp*
- atomic_fetch_add(atomic<_ITp*>* __a, ptrdiff_t __d)
+ atomic_fetch_add(atomic<_ITp*>* __a, ptrdiff_t __d) noexcept
{ return __a->fetch_add(__d); }
template<typename _ITp>
inline _ITp*
atomic_fetch_sub_explicit(volatile atomic<_ITp*>* __a,
- ptrdiff_t __d, memory_order __m)
+ ptrdiff_t __d, memory_order __m) noexcept
{ return __a->fetch_sub(__d, __m); }
template<typename _ITp>
inline _ITp*
atomic_fetch_sub_explicit(atomic<_ITp*>* __a, ptrdiff_t __d,
- memory_order __m)
+ memory_order __m) noexcept
{ return __a->fetch_sub(__d, __m); }
template<typename _ITp>
inline _ITp*
- atomic_fetch_sub(volatile atomic<_ITp*>* __a, ptrdiff_t __d)
+ atomic_fetch_sub(volatile atomic<_ITp*>* __a, ptrdiff_t __d) noexcept
{ return __a->fetch_sub(__d); }
template<typename _ITp>
inline _ITp*
- atomic_fetch_sub(atomic<_ITp*>* __a, ptrdiff_t __d)
+ atomic_fetch_sub(atomic<_ITp*>* __a, ptrdiff_t __d) noexcept
{ return __a->fetch_sub(__d); }
// @} group atomics