FreeBSD Manual Pages
std::basic_const_iterator(3) C++ Standard Libary std::basic_const_iterator(3) NAME std::basic_const_iterator - std::basic_const_iterator Synopsis Defined in header <iterator> template< std::input_iterator Iter > (since C++23) class basic_const_iterator; std::basic_const_iterator is an iterator adaptor which behaves ex- actly like the underlying iterator (which must be at least an LegacyInputIterator or model input_iterator), except that dereferencing converts the value re- turned by the underlying iterator as immutable. Specializations of std::ba- sic_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 If Iter models forward_iterator: iterator_category * member iterator_category is the same type as std::iterator_traits<Iter>::iterator_cate- gory. Otherwise, there is no member iterator_category. * std::contiguous_iterator_tag, if Iter models contiguous_iterator; * std::random_access_iterator_tag, if Iter models iterator_concept random_access_iterator; * std::bidirectional_iterator_tag, if Iter models bidirectional_iterator; * std::forward_iterator_tag, if Iter models forward_iterator; * std::input_iterator_tag otherwise. 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 constructor constructs a new iterator adaptor (public member function) base accesses the underlying iterator (public member function) operator* accesses the pointed-to element operator-> (public member function) operator[] accesses an element by index (public member function) operator++ operator++(int) operator+= advances or decrements the iterator operator-- (public member function) operator--(int) operator-= converts into any constant iterator to which an operator constant-iterator underlying iterator can be convertible (public member function) operator== operator< operator> compares the underlying iterators operator<= (public member function) operator>= operator<=> Non-member functions operator< operator> operator<= compares basic_const_iterator with non-basic_const_iter- ator operator>= (function template) operator<=> (C++23) operator+ advances or decrements the iterator operator- (function template) (C++23) operator- computes the distance between two iterator adaptors (C++23) (function template) iter_move casts the result of dereferencing the underlying itera- tor to its (C++23) associated rvalue reference type (function) Helper classes determines the common type of an std::common_type<std::basic_const_iterator> iterator and an adapted (C++23) basic_const_iterator type (class template special- ization) Helper alias templates template< std::input_iterator I > (since C++23) using const_iterator = /* see description */; 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 > (since C++23) using const_sentinel = /* see description */; 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 > (since C++23) constexpr const_sentinel<S> make_const_sentinel( S s ) { return s; } Notes Feature-test macro Value Std Feature 202207L (C++23) std::basic_const_iterator __cpp_lib_ranges_as_const 202311L (C++23) std::basic_const_iterator should follow (DR) its underlying type's con- vertibility Example // Run this code #include <cassert> #include <iterator> #include <vector> int main() { std::vector v{1, 2, 3}; std::vector<int>::iterator i = v.begin(); *i = 4; // OK, v[0] == 4 now i[1] = 4; // OK, the same as *(i + 1) = 4; auto ci = std::make_const_iterator(i); assert(*ci == 4); // OK, can read the underlying object assert(ci[0] == 4); // OK, ditto // *ci = 13; // Error: location is read-only // ci[0] = 13; // Error: ditto ci.base()[0] = 42; // OK, underlying iterator is writable assert(*ci == 42); // OK, underlying location v[0] was modified } Defect reports The following behavior-changing defect reports were applied retroac- tively to previously published C++ standards. DR Applied to Behavior as published Correct behavior P2836R1 C++23 basic_const_iterator doesn't follow its conversion operator underlying type's convertibility provided http://cppreference.com 2024.06.10 std::basic_const_iterator(3)
NAME | Synopsis | Member types | Member objects | Member functions | Non-member functions | Helper classes | Notes | Example
Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=std::basic_const_iterator&sektion=3&manpath=FreeBSD+Ports+15.1.quarterly>
