home | help
std::atomic::fetch_sub(3)      C++ Standard Libary     std::atomic::fetch_sub(3)

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

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

		      std::memory_order  order	=			     (3)
     (since C++11)

			  std::memory_order_seq_cst ) noexcept;
	T* fetch_sub( std::ptrdiff_t arg,

		      std::memory_order order  =			     (4)
     (since C++11)

			  std::memory_order_seq_cst ) volatile noexcept;

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

	1,2) For signed integral types, arithmetic is defined to use twoas  com-
     plement
	representation. There are no undefined results.

	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
     (since C++20)
	traits but is encouraged to do so. If the result is not a
	representable value for its type, the result is unspecified but the
	operation otherwise has no undefined behavior.

	3,4) The result may be an undefined address, but the operation otherwise
     has no
	undefined behavior.
	If T is not a complete object type, the program is ill-formed.

	It is deprecated if  std::atomic<T>::is_always_lock_free  is  false  and
     (since C++20)
	overload (2) or (4) participates in overload resolution.

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

Return value
	The value immediately preceding the effects of this function in the mod-
     ification
	order of *this.

	Defect reports

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

	  DR	Applied to		Behavior as published		    Cor-
     rect behavior
	P0558R1 C++11	   arithmetic permitted on pointers to (possibly    made
     ill-formed
			   cv-qualified) void or function

See also
	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)

http://cppreference.com 	   2024.06.10	       std::atomic::fetch_sub(3)

home | help