std::basic_const_iterator
Defined in header <iterator>
|
||
template< std::input_iterator Iter > class basic_const_iterator; |
(since C++23) | |
std::basic_const_iterator
is an iterator adaptor which behaves exactly like the underlying iterator (which must be at least an LegacyInputIterator or model input_iterator
), except that dereferencing converts the value returned by the underlying iterator as immutable. Specializations of std::basic_const_iterator
are constant iterators, that is, the iterator can never be used as an output iterator because modifying elements is not allowed.
Member types
Member type | Definition |
iterator_category
|
If
Otherwise, there is no member |
iterator_concept
|
|
value_type
|
std::iter_value_t<Iter> |
difference_type
|
std::iter_difference_t<Iter> |
reference (private)
|
std::iter_const_reference_t<Iter>. (exposition-only member type*) |
Member objects
Member name | Definition |
current (private)
|
the underlying iterator from which base() copies or moves(exposition-only member object*) |
Member functions
constructs a new iterator adaptor (public member function) | |
assigns another iterator adaptor (public member function) | |
accesses the underlying iterator (public member function) | |
accesses the pointed-to element (public member function) | |
accesses an element by index (public member function) | |
advances or decrements the iterator (public member function) |
Non-member functions
compares the underlying iterators (function template) | |
(C++23) |
advances the iterator (function template) |
(C++23) |
computes the distance between two iterator adaptors (function template) |
(C++23) |
casts the result of dereferencing the underlying iterator to its associated rvalue reference type (function) |
Helper classes
determines the common type of an iterator and an adapted basic_const_iterator type (class template specialization) |
Helper alias templates
template< std::input_iterator I > using const_iterator = /* see description */; |
(since C++23) | |
If I
models constant-iterator
(an exposition-only concept), then const_iterator<I> denotes a type I
. Otherwise, basic_const_iterator<I>.
template< std::semiregular S > using const_sentinel = /* see description */; |
(since C++23) | |
If S
models input_iterator
, then const_sentinel<S> denotes a type const_iterator<S>. Otherwise, S
.
Helper function templates
template< std::input_iterator T > constexpr const_iterator<T> make_const_iterator( I it ) { return it; } |
(since C++23) | |
template< std::semiregular S > constexpr const_sentinel<S> make_const_sentinel( S s ) { return s; } |
(since C++23) | |
Example
This section is incomplete Reason: example |