Subtracts a value from an existing value that is stored in an atomic object.
template <class T> T* atomic_fetch_sub( volatile atomic<T*> *Atom, ptrdiff_t Value ) noexcept; template <class T> T* atomic_fetch_sub( atomic<T*> *Atom, ptrdiff_t Value ) noexcept;
The atomic_fetch_sub function performs a read-modify-write operation to atomically subtract Value from the stored value in Atom, using the memory_order_seq_cst memory_order constraint.
When the atomic type is atomic_address, Value has type ptrdiff_t and the operation treats the stored pointer as a char *.
This operation is also overloaded for integral types: