Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

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<Integral> specializations
	  and atomic<Floating> 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
       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.

	  1,2) For signed integral types, arithmetic is	defined	 to  use  twos
       complement
	  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_lim-
       its (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 oth-
       erwise 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
       modification
	  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
       Correct 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)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=std::atomic::fetch_sub&sektion=3&manpath=FreeBSD+Ports+15.1.quarterly>

home | help