Namespaces
Variants

std::basic_const_iterator

From cppreference.com
Revision as of 09:39, 30 July 2023 by Cooky (talk | contribs) (added c++23 std::basic_const_iterator and friends)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
 
 
Iterator library
Iterator concepts
Iterator primitives
Algorithm concepts and utilities
Indirect callable concepts
Common algorithm requirements
(C++20)
(C++20)
(C++20)
Utilities
(C++20)
Iterator adaptors
Range access
(C++11)(C++14)
(C++14)(C++14)  
(C++11)(C++14)
(C++14)(C++14)  
(C++17)(C++20)
(C++17)
(C++17)
 
 
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 Iter models forward_iterator:

  • member iterator_category is the same type as std::iterator_traits<Iter>::iterator_category.

Otherwise, there is no member iterator_category.

iterator_concept
value_type std::iter_value_t<Iter>
difference_type std::iter_difference_t<Iter>
reference (private) std::iter_const_reference_t<Iter>. The name is for exposition only.

Member functions

constructs a new basic_const_iterator
(public member function) [edit]
assigns another basic_const_iterator
(public member function) [edit]
accesses the underlying iterator
(public member function) [edit]
accesses the pointed-to element
(public member function) [edit]
accesses an element by index
(public member function) [edit]
advances or decrements the basic_const_iterator
(public member function) [edit]

Member objects

Member name Definition
current (private) the underlying iterator from which base() copies or moves, the name is for exposition only

Non-member functions

compares the underlying iterators
(function template) [edit]
(C++23)
advances the iterator
(function template) [edit]
(C++23)
computes the distance between two iterator adaptors
(function template) [edit]
(C++23)
casts the result of dereferencing the underlying iterator to its associated rvalue reference type
(function) [edit]

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