GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Support
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages
std::atomic::fetch_sub(3) C++ Standard Libary std::atomic::fetch_sub(3)

std::atomic::fetch_sub - std::atomic::fetch_sub


member only of atomic<Integral>(C++11) and atomic<Floating>(C++20)
template specializations
T fetch_sub( T arg,
std::memory_order order = std::memory_order_seq_cst ) noexcept;
T fetch_sub( T arg,
std::memory_order order = std::memory_order_seq_cst ) volatile noexcept;
member only of atomic<T*> template specialization (1)
T* fetch_sub( std::ptrdiff_t arg,
std::memory_order order = std::memory_order_seq_cst ) noexcept; (2)
T* fetch_sub( std::ptrdiff_t arg,
std::memory_order order = std::memory_order_seq_cst ) volatile noexcept;


Atomically replaces the current value with the result of arithmetic subtraction of
the value and arg. That is, it performs atomic post-decrement. The operation is
read-modify-write operation. Memory is affected according to the value of order.


For signed Integral types, arithmetic is defined to use two’s complement
representation. There are no undefined results.


For T* types, the result may be an undefined address, but the operation otherwise
has no undefined behavior. The program is ill-formed if T is not an object type.


For floating-point types, the floating-point environment in effect may
be different from the calling thread's floating-point environment. The
operation need not be conform to the corresponding std::numeric_limits
traits but is encouraged to do so. If the result is not a
representable value for its type, the result is unspecified but the (since C++20)
operation otherwise has no undefined behavior.


The volatile-qualified versions are deprecated if
std::atomic<T>::is_always_lock_free is false.


arg - the other argument of arithmetic subtraction
order - memory order constraints to enforce


The value immediately preceding the effects of this function in the modification
order of *this.


Defect reports


The following behavior-changing defect reports were applied retroactively to
previously published C++ standards.


DR Applied to Behavior as published Correct behavior
P0558R1 C++11 arithmetic permitted on pointers to cv void or made ill-formed
function


atomic_fetch_sub subtracts a non-atomic value from an atomic object and
atomic_fetch_sub_explicit obtains the previous value of the atomic
(C++11) (function template)
(C++11)
operator++
operator++(int) increments or decrements the atomic value by one
operator-- (public member function)
operator--(int)

2022.07.31 http://cppreference.com

Search for    or go to Top of page |  Section 3 |  Main Index

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with ManDoc.