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

NAME
     std::input_iterator - std::input_iterator

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

	    concept input_iterator =
		std::input_or_output_iterator<I> &&
		std::indirectly_readable<I>				      &&
     (since C++20)
		requires { typename /*ITER_CONCEPT*/<I>; } &&

		std::derived_from</*ITER_CONCEPT*/<I>,
	std::input_iterator_tag>;

	The input_iterator concept is a refinement of  input_or_output_iterator,
     adding the
	requirement that the referenced values can be read (via indirectly_read-
     able) and the
	requirement that the iterator concept tag be present.

Notes
	Unlike	the LegacyInputIterator requirements, the input_iterator concept
     does not
	require equality_comparable, since input iterators  are  typically  com-
     pared with
	sentinels.

Example
	A minimum input iterator.

      #include <cstddef>
      #include <iterator>

      struct SimpleInputIterator
      {
	  using difference_type = std::ptrdiff_t;
	  using value_type = int;

	  int operator*() const;

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

      static_assert(std::input_iterator<SimpleInputIterator>);

See also
	input_or_output_iterator  specifies that objects of a type can be incre-
     mented and
	(C++20) 		 dereferenced
				 (concept)
	forward_iterator	 specifies that an input_iterator is  a  forward
     iterator,
	(C++20) 		 supporting equality comparison and multi-pass
				 (concept)

http://cppreference.com 	   2024.06.10		  std::input_iterator(3)

home | help