29 #ifndef _GLIBCXX_DEBUG_STL_ITERATOR_H 30 #define _GLIBCXX_DEBUG_STL_ITERATOR_H 1 37 template<
typename _Iterator>
41 typename _Distance_traits<_Iterator>::__type& __dist)
44 template<
typename _Iterator>
45 inline typename _Distance_traits<_Iterator>::__type
50 template<
typename _Iterator,
typename _Size>
53 {
return __can_advance(__it.
base(), -__n); }
55 template<
typename _Iterator,
typename _Sequence>
61 #if __cplusplus < 201103L 62 template<
typename _Iterator>
63 struct _Unsafe_type<
std::reverse_iterator<_Iterator> >
65 typedef typename _Unsafe_type<_Iterator>::_Type _UnsafeType;
69 template<
typename _Iterator>
73 typedef typename _Unsafe_type<_Iterator>::_Type _UnsafeType;
77 template<
typename _Iterator>
80 -> decltype(std::__make_reverse_iterator(__unsafe(__it.
base())))
81 {
return std::__make_reverse_iterator(__unsafe(__it.
base())); }
84 #if __cplusplus >= 201103L 86 template<
typename _Iterator>
90 typename _Distance_traits<_Iterator>::__type& __dist)
91 {
return __valid_range(__first.base(), __last.base(), __dist); }
93 template<
typename _Iterator>
94 inline typename _Distance_traits<_Iterator>::__type
99 template<
typename _Iterator,
typename _Size>
102 {
return __can_advance(__it.base(), __n); }
104 template<
typename _Iterator>
107 -> decltype(std::make_move_iterator(__unsafe(__it.base())))
108 {
return std::make_move_iterator(__unsafe(__it.base())); }
110 template<
typename _Iterator>
113 -> decltype(std::make_move_iterator(
__base(__it.base())))
114 {
return std::make_move_iterator(
__base(__it.base())); }
120 _GLIBCXX_BEGIN_NAMESPACE_VERSION
122 template<
typename _Iterator,
typename _Container,
typename _Sequence>
125 __gnu_cxx::__normal_iterator<_Iterator, _Container>,
128 _GLIBCXX_END_NAMESPACE_VERSION
ISO C++ entities toplevel namespace is std.
GNU debug classes for public use.
Random-access iterators support a superset of bidirectional iterator operations.
_GLIBCXX17_CONSTEXPR iterator_type base() const
_Iterator __base(_Iterator __it)
_Distance_traits< _Iterator >::__type __get_distance(_Iterator __lhs, _Iterator __rhs, std::random_access_iterator_tag)
bool __valid_range(_InputIterator __first, _InputIterator __last, typename _Distance_traits< _InputIterator >::__type &__dist)