| 
| template<bool _IsMove, typename _CharT >  | 
| __gnu_cxx::__enable_if< __is_char< _CharT >::__value, ostreambuf_iterator< _CharT > >::__type  | std::__copy_move_a2 (_CharT *__first, _CharT *__last, ostreambuf_iterator< _CharT > __result) | 
|   | 
| template<bool _IsMove, typename _CharT >  | 
| __gnu_cxx::__enable_if< __is_char< _CharT >::__value, ostreambuf_iterator< _CharT > >::__type  | std::__copy_move_a2 (const _CharT *__first, const _CharT *__last, ostreambuf_iterator< _CharT > __result) | 
|   | 
| template<bool _IsMove, typename _CharT >  | 
| __gnu_cxx::__enable_if< __is_char< _CharT >::__value, _CharT * >::__type  | std::__copy_move_a2 (istreambuf_iterator< _CharT > __first, istreambuf_iterator< _CharT > __last, _CharT *__result) | 
|   | 
| template<typename _CharT , typename _Size >  | 
| __gnu_cxx::__enable_if< __is_char< _CharT >::__value, _CharT * >::__type  | std::__copy_n_a (istreambuf_iterator< _CharT > __it, _Size __n, _CharT *__result, bool __strict) | 
|   | 
| template<typename _Iter >  | 
| constexpr iterator_traits< _Iter >::iterator_category  | std::__iterator_category (const _Iter &) | 
|   | 
| template<typename _Iterator , typename _ReturnType  = __conditional_t<__move_if_noexcept_cond      <typename iterator_traits<_Iterator>::value_type>::value,		_Iterator, move_iterator<_Iterator>>>  | 
| constexpr _ReturnType  | std::__make_move_if_noexcept_iterator (_Iterator __i) | 
|   | 
| template<typename _Tp , typename _ReturnType  = __conditional_t<__move_if_noexcept_cond<_Tp>::value,		      const _Tp*, move_iterator<_Tp*>>>  | 
| constexpr _ReturnType  | std::__make_move_if_noexcept_iterator (_Tp *__i) | 
|   | 
| template<typename _Iterator >  | 
| constexpr reverse_iterator< _Iterator >  | std::__make_reverse_iterator (_Iterator __i) | 
|   | 
| template<typename _Iterator >  | 
| constexpr auto  | std::__miter_base (reverse_iterator< _Iterator > __it) -> decltype(__make_reverse_iterator(__miter_base(__it.base()))) | 
|   | 
| template<typename _Iterator >  | 
| constexpr auto  | std::__niter_base (reverse_iterator< _Iterator > __it) -> decltype(__make_reverse_iterator(__niter_base(__it.base()))) | 
|   | 
| template<typename _CharT , typename _Distance >  | 
| __gnu_cxx::__enable_if< __is_char< _CharT >::__value, void >::__type  | std::advance (istreambuf_iterator< _CharT > &__i, _Distance __n) | 
|   | 
| template<typename _Container >  | 
| constexpr back_insert_iterator< _Container >  | std::back_inserter (_Container &__x) | 
|   | 
| template<typename _CharT >  | 
| __gnu_cxx::__enable_if< __is_char< _CharT >::__value, ostreambuf_iterator< _CharT > >::__type  | std::copy (istreambuf_iterator< _CharT > __first, istreambuf_iterator< _CharT > __last, ostreambuf_iterator< _CharT > __result) | 
|   | 
| template<typename _CharT >  | 
| __gnu_cxx::__enable_if< __is_char< _CharT >::__value, istreambuf_iterator< _CharT > >::__type  | std::find (istreambuf_iterator< _CharT > __first, istreambuf_iterator< _CharT > __last, const _CharT &__val) | 
|   | 
| template<typename _Container >  | 
| constexpr front_insert_iterator< _Container >  | std::front_inserter (_Container &__x) | 
|   | 
| template<typename _Container >  | 
| constexpr insert_iterator< _Container >  | std::inserter (_Container &__x, std::__detail::__range_iter_t< _Container > __i) | 
|   | 
| template<typename _Iterator >  | 
| constexpr move_iterator< _Iterator >  | std::make_move_iterator (_Iterator __i) | 
|   | 
| template<typename _Iterator >  | 
| constexpr reverse_iterator< _Iterator >  | std::make_reverse_iterator (_Iterator __i) | 
|   | 
| template<typename _Iterator >  | 
| constexpr bool  | std::operator!= (const move_iterator< _Iterator > &__x, const move_iterator< _Iterator > &__y) | 
|   | 
| template<typename _IteratorL , typename _IteratorR >  | 
| constexpr bool  | std::operator!= (const move_iterator< _IteratorL > &__x, const move_iterator< _IteratorR > &__y) | 
|   | 
template<typename _IteratorL , typename _IteratorR >  
requires requires { { __x.base() != __y.base() } -> convertible_to<bool>; } | 
| constexpr bool  | std::operator!= (const reverse_iterator< _IteratorL > &__x, const reverse_iterator< _IteratorR > &__y) | 
|   | 
| template<typename _Iterator >  | 
| constexpr move_iterator< _Iterator >  | std::operator+ (typename move_iterator< _Iterator >::difference_type __n, const move_iterator< _Iterator > &__x) | 
|   | 
| template<typename _Iterator >  | 
| constexpr reverse_iterator< _Iterator >  | std::operator+ (typename reverse_iterator< _Iterator >::difference_type __n, const reverse_iterator< _Iterator > &__x) | 
|   | 
| template<typename _IteratorL , typename _IteratorR >  | 
| constexpr auto  | std::operator- (const move_iterator< _IteratorL > &__x, const move_iterator< _IteratorR > &__y) -> decltype(__x.base() - __y.base()) | 
|   | 
| template<typename _IteratorL , typename _IteratorR >  | 
| constexpr auto  | std::operator- (const reverse_iterator< _IteratorL > &__x, const reverse_iterator< _IteratorR > &__y) -> decltype(__y.base() - __x.base()) | 
|   | 
| template<typename _Iterator >  | 
| constexpr bool  | std::operator< (const move_iterator< _Iterator > &__x, const move_iterator< _Iterator > &__y) | 
|   | 
template<typename _IteratorL , typename _IteratorR >  
requires requires { { __x.base() < __y.base() } -> convertible_to<bool>; } | 
| constexpr bool  | std::operator< (const move_iterator< _IteratorL > &__x, const move_iterator< _IteratorR > &__y) | 
|   | 
template<typename _IteratorL , typename _IteratorR >  
requires requires { { __x.base() > __y.base() } -> convertible_to<bool>; } | 
| constexpr bool  | std::operator< (const reverse_iterator< _IteratorL > &__x, const reverse_iterator< _IteratorR > &__y) | 
|   | 
| template<typename _Iterator >  | 
| constexpr bool  | std::operator<= (const move_iterator< _Iterator > &__x, const move_iterator< _Iterator > &__y) | 
|   | 
template<typename _IteratorL , typename _IteratorR >  
requires requires { { __y.base() < __x.base() } -> convertible_to<bool>; } | 
| constexpr bool  | std::operator<= (const move_iterator< _IteratorL > &__x, const move_iterator< _IteratorR > &__y) | 
|   | 
template<typename _IteratorL , typename _IteratorR >  
requires requires { { __x.base() >= __y.base() } -> convertible_to<bool>; } | 
| constexpr bool  | std::operator<= (const reverse_iterator< _IteratorL > &__x, const reverse_iterator< _IteratorR > &__y) | 
|   | 
| template<three_way_comparable _Iterator>  | 
| constexpr compare_three_way_result_t< _Iterator, _Iterator >  | std::operator<=> (const reverse_iterator< _Iterator > &__x, const reverse_iterator< _Iterator > &__y) | 
|   | 
| template<typename _IteratorL , three_way_comparable_with< _IteratorL > _IteratorR>  | 
| constexpr compare_three_way_result_t< _IteratorL, _IteratorR >  | std::operator<=> (const reverse_iterator< _IteratorL > &__x, const reverse_iterator< _IteratorR > &__y) | 
|   | 
| template<typename _CharT , typename _Traits >  | 
| bool  | std::operator== (const istreambuf_iterator< _CharT, _Traits > &__a, const istreambuf_iterator< _CharT, _Traits > &__b) | 
|   | 
| template<typename _Iterator >  | 
| constexpr bool  | std::operator== (const move_iterator< _Iterator > &__x, const move_iterator< _Iterator > &__y) | 
|   | 
template<typename _IteratorL , typename _IteratorR >  
requires requires { { __x.base() == __y.base() } -> convertible_to<bool>; } | 
| constexpr bool  | std::operator== (const move_iterator< _IteratorL > &__x, const move_iterator< _IteratorR > &__y) | 
|   | 
template<typename _Iterator >  
requires requires { { __x.base() == __y.base() } -> convertible_to<bool>; } | 
| constexpr bool  | std::operator== (const reverse_iterator< _Iterator > &__x, const reverse_iterator< _Iterator > &__y) | 
|   | 
template<typename _IteratorL , typename _IteratorR >  
requires requires { { __x.base() == __y.base() } -> convertible_to<bool>; } | 
| constexpr bool  | std::operator== (const reverse_iterator< _IteratorL > &__x, const reverse_iterator< _IteratorR > &__y) | 
|   | 
| template<typename _Iterator >  | 
| constexpr bool  | std::operator> (const move_iterator< _Iterator > &__x, const move_iterator< _Iterator > &__y) | 
|   | 
template<typename _IteratorL , typename _IteratorR >  
requires requires { { __y.base() < __x.base() } -> convertible_to<bool>; } | 
| constexpr bool  | std::operator> (const move_iterator< _IteratorL > &__x, const move_iterator< _IteratorR > &__y) | 
|   | 
template<typename _IteratorL , typename _IteratorR >  
requires requires { { __x.base() < __y.base() } -> convertible_to<bool>; } | 
| constexpr bool  | std::operator> (const reverse_iterator< _IteratorL > &__x, const reverse_iterator< _IteratorR > &__y) | 
|   | 
| template<typename _Iterator >  | 
| constexpr bool  | std::operator>= (const move_iterator< _Iterator > &__x, const move_iterator< _Iterator > &__y) | 
|   | 
template<typename _IteratorL , typename _IteratorR >  
requires requires { { __x.base() < __y.base() } -> convertible_to<bool>; } | 
| constexpr bool  | std::operator>= (const move_iterator< _IteratorL > &__x, const move_iterator< _IteratorR > &__y) | 
|   | 
template<typename _IteratorL , typename _IteratorR >  
requires requires { { __x.base() <= __y.base() } -> convertible_to<bool>; } | 
| constexpr bool  | std::operator>= (const reverse_iterator< _IteratorL > &__x, const reverse_iterator< _IteratorR > &__y) | 
|   | 
Abstractions for uniform iterating through various underlying types.