C++ named requirements: LegacyInputIterator
An LegacyInputIterator is an LegacyIterator that can read from the pointed-to element. LegacyInputIterators only guarantee validity for single pass algorithms: once an LegacyInputIterator i
has been incremented, all copies of its previous value may be invalidated.
Requirements
The type It
satisfies LegacyInputIterator if.
- The type
It
satisfies LegacyIterator - The type
It
satisfies EqualityComparable
And, given.
-
i
andj
, values of typeIt
orconst It
-
reference
, the type denoted bystd::iterator_traits<It>::reference
-
value_type
, the type denoted bystd::iterator_traits<It>::value_type
The following expressions must be valid and have their specified effects.
Expression | Return | Equivalent expression | Notes |
---|---|---|---|
i != j | contextually convertible to bool
| !(i == j) |
Precondition: (i, j) is in the domain of == . |
*i |
reference , convertible to value_type
| If i == j and (i, j) is in the domain of == then this is equivalent to *j . | Precondition: The expression |
i->m | (*i).m |
Precondition: i is dereferenceable. |
|
++i | It& | Precondition: Postcondition: Postcondition: Any copies of the previous value of |
|
(void)i++ | (void)++i | ||
*i++ | convertible to value_type |
value_type x = *i; ++i; return x; |
Notes
"in the domain of ==
" means equality comparison is defined between the two iterator values. For input iterators, equality comparison does not need to be defined for all values, and the set of the values in the domain of ==
may change over time.
The reference
type for an input iterator that is not also a LegacyForwardIterator does not have to be a reference type: dereferencing an input iterator may return a proxy object or value_type
itself by value (as in the case of std::istreambuf_iterator
).
ConceptFor the definition of
where the exposition-only concept | (since C++20) |
See also
specifies that a type is an input iterator, that is, its referenced values can be read and it can be both pre- and post-incremented (concept) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
http://en.cppreference.com/w/cpp/named_req/InputIterator