function
<atomic>
std::atomic_fetch_sub
template (integral) (1) |
template <class T> T atomic_fetch_sub (volatile atomic<T>* obj, T val) noexcept;
template <class T> T atomic_fetch_sub (atomic<T>* obj, T val) noexcept;
|
---|
template (pointer) (2) |
template <class U> U* atomic_fetch_sub (volatile atomic<U*>* obj, ptrdiff_t val) noexcept;
template <class U> U* atomic_fetch_sub (atomic<U*>* obj, ptrdiff_t val) noexcept;
|
---|
overloads (3) |
T atomic_fetch_sub (volatile A* obj, M val) noexcept;
T atomic_fetch_sub (A* obj, M val) noexcept;
|
---|
Subtract from contained value
Parameters
- obj
- Pointer to an atomic object that contains either an integral or a pointer value.
Type A represents other overloaded atomic types (in case the library does not implement the C-style atomic types as instantiations of atomic).
- val
- Value to subtract.
T is the type of the value contained by the atomic object (atomic's template parameter).
ptrdiff_t is a signed integral type.
M is T if T is an integral type, or ptrdiff_t if T is a pointer.
Return value
The contained value before the call.
T (or U*
) is the type of the value contained by the atomic object (atomic's template parameter).
Data races
No data races (atomic operation). The operation uses sequential consistency (memory_order_seq_cst).
Exception safety
No-throw guarantee: never throws exceptions.