Concept InputIteratorconcept InputIterator<typename X>
: IteratorAssociatedTypes, CopyConstructible, EqualityComparable {
Â
requires Assignable, SameType<Assignable::result_type, X&>;
Â
requires SignedIntegral,
Convertible,
Convertibleconst value_type*>;
Â
typename postincrement_result;
requires Dereferenceable,
Convertible<Dereferenceable::reference, value_type>;
Â
pointer operator>(X);
X& operator++(X&);
postincrement_result operator++(X&, int);
reference operator*(X);
Â
bool operator!=(X, X);
}; Where Defined#include <iterator> DescriptionIn the InputIterator concept, the term the domain of
== is used in the ordinary mathematical sense to denote the
set of values over which == is (required to be) defined. This set can
change over time. Each algorithm places additional requirements on the
domain of == for the iterator values it uses. These requirements can
be inferred from the uses that algorithm makes of == and !=. [
Example: the call find(a,b,x) is defined only if the value of a has the
property p defined as follows: b has property p and a value i has
property p if (*i==x) or if (*i!=x and ++i has property p).  end
example ] [ Note:
For input iterators, a == b does not imply ++a == ++b. (Equality does
not guarantee the substitution property or referential transparency.)
Algorithms on input iterators should never attempt to pass through the
same iterator twice. They should be single pass algorithms. These
algorithms can be used with istreams as the source of the input data
through the istream_iterator class.  end note ]
reference operator*(X a );
Requires: a is dereferenceable.
Remarks: If b is a value of
type X, a == b and (a, b) is in the domain of == then *a is equivalent
to *b.
pointer operator>(X a);
Requires: (*a ).m is welldefined
