C++ named requirements: LegacyIterator
The LegacyIterator requirements describe types that can be used to identify and traverse the elements of a container.
LegacyIterator is the base set of requirements used by other iterator types: LegacyInputIterator, LegacyOutputIterator, LegacyForwardIterator, LegacyBidirectionalIterator, and LegacyRandomAccessIterator. Iterators can be thought of as an abstraction of pointers.
Requirements
The type It
satisfies LegacyIterator if.
- The type
It
satisfies CopyConstructible, and - The type
It
satisfies CopyAssignable, and - The type
It
satisfies Destructible, and - lvalues of type
It
satisfy Swappable, and -
std::iterator_traits<It>
has member typedefsvalue_type
,difference_type
,reference
,pointer
, anditerator_category
, and
Given.
-
r
, an lvalue of typeIt
.
The following expressions must be valid and have their specified effects:
Expression | Return Type | Precondition |
---|---|---|
*r | unspecified |
r is dereferenceable (see below) |
++r |
It& |
r is incrementable (the behavior of the expression ++r is defined) |
Dereferenceable iterators
Iterators for which the behavior of the expression *i
is defined are called dereferenceable.
Iterators are not dereferenceable if.
- they are past-the-end iterators (including pointers past the end of an array) or before-begin iterators. Such iterators may be dereferenceable in a particular implementation, but the library never assumes that they are.
- they are singular iterators, that is, iterators that are not associated with any sequence. A null pointer, as well as a default-constructed pointer (holding an indeterminate value) is singular
- they were invalidated by one of the iterator-invalidating operations on the sequence to which they refer.
ConceptFor the definition of
where the exposition-only concept | (since C++20) |
See also
specifies that objects of a type can be incremented and dereferenced (concept) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
http://en.cppreference.com/w/cpp/named_req/Iterator