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

FreeBSD Manual Pages

  
 
  

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

NAME
       std::output_iterator - std::output_iterator

Synopsis
	  Defined in header <iterator>
	  template <class I, class T>

	  concept output_iterator =
	  std::input_or_output_iterator<I> &&
	  std::indirectly_writable<I,			T>		    &&
       (since C++20)
	  requires(I i,	T&& t) {
	  *i++ = std::forward<T>(t); //	not required to	be equality-preserving

	  };

	  The output_iterator concept is a refinement of input_or_output_iter-
       ator, adding the
	  requirement that it can be used to write values of  type  and	 value
       category	encoded
	  by T (via indirectly_writable). equality_comparable is not required.

	 Semantic requirements

	  Let  E  be  an  expression  such that	decltype((E)) is T, and	i be a
       dereferenceable
	  object of type I. output_iterator<I, T> is modeled only if  all  the
       concepts	it
	  subsumes  are	 modeled, and *i++ = E;	has effects equivalent to *i =
       E; ++i;.

	 Equality preservation

	  An expression	is equality preserving if it results in	equal  outputs
       given equal
	  inputs.

	    * The inputs to an expression consist of its operands.
	    *  The  outputs  of	 an  expression	 consist of its	result and all
       operands	modified by
	      the expression (if any).

	  In specification of standard concepts, operands are defined  as  the
       largest
	  subexpressions that include only:

	    * an id-expression,	and
	    * invocations of std::move,	std::forward, and std::declval.

	  The  cv-qualification	 and  value category of	each operand is	deter-
       mined by	assuming
	  that each template type parameter denotes a cv-unqualified  complete
       non-array object
	  type.

	  Every	 expression  required to be equality preserving	is further re-
       quired to be
	  stable: two evaluations of such an expression	with  the  same	 input
       objects must have
	  equal	 outputs absent	any explicit intervening modification of those
       input objects.

Notes
	  Unlike the LegacyOutputIterator  requirements,  the  output_iterator
       concept does not
	  require that the iterator category tag be defined.

	  Algorithms on	output iterators should	be single pass.

See also
	  input_or_output_iterator specifies that objects of a type can	be in-
       cremented and
	  (C++20)		   dereferenced
				   (concept)

http://cppreference.com		  2022.07.31	       std::output_iterator(3)

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

home | help