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

FreeBSD Manual Pages

  
 
  

home | help
std::input_...put_iterator(3) C++ Standard Libarystd::input_...put_iterator(3)

NAME
       std::input_or_output_iterator - std::input_or_output_iterator

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

	      concept input_or_output_iterator =
		  requires(I i)	{		    (since C++20)
		      {	*i } ->	/*can-reference*/;
		  } &&

		  std::weakly_incrementable<I>;

	  The input_or_output_iterator concept forms the basis of the iterator
       concept
	  taxonomy; every iterator type	satisfies the input_or_output_iterator
       requirements.

	  The  exposition-only	concept	 /*can-reference*/ is satisfied	if and
       only if the type
	  is referenceable (in particular, not void).

	   This	section	is incomplete
	   Reason: Is *i required to be	equality-preserving?

Notes
	  input_or_output_iterator itself only specifies operations for	deref-
       erencing	and
	  incrementing an iterator. Most algorithms  will  require  additional
       operations, for
	  example:

	    * comparing	iterators with sentinels (see sentinel_for);
	    * reading values from an iterator (see indirectly_readable and in-
       put_iterator);
	    *  writing values to an iterator (see indirectly_writable and out-
       put_iterator);
	    * a	richer set of iterator movements (see forward_iterator,
	      bidirectional_iterator, random_access_iterator).

	  Unlike the LegacyIterator requirements, the input_or_output_iterator
       concept does
	  not require copyability.

Example
	  A minimum iterator.

	#include <cstddef>
	#include <iterator>

	struct SimpleIterator
	{
	    using difference_type = std::ptrdiff_t;

	    int	operator*();

	    SimpleIterator& operator++();
	    void operator++(int) { ++*this; }
	};

	static_assert(std::input_or_output_iterator<SimpleIterator>);

Category:
	    * Todo with	reason

http://cppreference.com		  2024.06.10	 std::input_...put_iterator(3)

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

home | help