C++ named requirements: LegacyForwardIterator
A LegacyForwardIterator is an LegacyIterator that can read data from the pointed-to element.
Unlike LegacyInputIterator and LegacyOutputIterator, it can be used in multipass algorithms.
Requirements
The type It satisfies LegacyForwardIterator if.
- The type
Itsatisfies LegacyInputIterator - The type
Itsatisfies DefaultConstructible - Objects of the type
Itprovide multipass guarantee described below - The type
std::iterator_traits<It>::referencemust be exactly
-
-
T&ifItsatisfies LegacyOutputIterator (Itis mutable) -
const T&otherwise (Itis constant),
-
- (where
Tis the type denoted bystd::iterator_traits<It>::value_type)
- Equality and inequality comparison is defined over all iterators for the same underlying sequence and the value initialized-iterators (since C++14).
And, given.
-
i, dereferenceable iterator of typeIt -
reference,the type denoted bystd::iterator_traits<It>::reference
The following expressions must be valid and have their specified effects.
| Expression | Return type | Equivalent expression | Notes |
|---|---|---|---|
i++ | It | It ip=i; ++i; return ip; | |
*i++ | reference |
A mutable LegacyForwardIterator is a LegacyForwardIterator that additionally satisfies the LegacyOutputIterator requirements.
Multipass guarantee
Given a and b, dereferenceable iterators of type It.
- If
aandbcompare equal (a == bis contextually convertible totrue) then either they are both non-dereferenceable or*aand*bare references bound to the same object - If
*aand*brefer to the same object, thena==b. - Assignment through a mutable
ForwardIteratoriterator cannot invalidate the iterator (implicit due toreferencedefined as a true reference) - incrementing a copy of
adoes not change the value read froma(formally, eitherItis a raw pointer type or the expression(void)++It(a), *ais equivalent to the expression*a) -
a == bimplies++a == ++b
Singular iteratorsA value-initialized LegacyForwardIterator behaves like the past-the-end iterator of some unspecified empty container: it compares equal to all value-initialized LegacyForwardIterators of the same type. | (since C++14) |
ConceptFor the definition of
where the exposition-only concept | (since C++20) |
See also
specifies that an InputIterator is a forward iterator, supporting equality comparison and multi-pass (concept) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
http://en.cppreference.com/w/cpp/named_req/ForwardIterator