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>(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 noex-
       cept;
	  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 noex-
       cept;

	  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 twos comple-
       ment
	  representation. There	are no undefined results.

	  For T* types,	the result may be an undefined address,	but the	opera-
       tion 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_lim-
       its
	  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.

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  cv  void  or
       made ill-formed
			     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		  2022.07.31	     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.0>

home | help