29#ifndef _GLIBCXX_DEBUG_STL_ITERATOR_H
30#define _GLIBCXX_DEBUG_STL_ITERATOR_H 1
37 template<
typename _Iterator>
42 typename _Distance_traits<_Iterator>::__type& __dist)
47 template<
typename _Iterator>
49 inline typename _Distance_traits<_Iterator>::__type
54 template<
typename _Iterator,
typename _Size>
58 {
return __gnu_debug::__can_advance(__it.
base(), -__n); }
60 template<
typename _Iterator,
typename _Diff>
66 {
return __gnu_debug::__can_advance(__it.
base(), __dist, -__way); }
68 template<
typename _Iterator,
typename _Sequence>
75#if __cplusplus < 201103L
76 template<
typename _Iterator>
77 struct _Unsafe_type<
std::reverse_iterator<_Iterator> >
79 typedef typename _Unsafe_type<_Iterator>::_Type _UnsafeType;
83 template<
typename _Iterator>
87 typedef typename _Unsafe_type<_Iterator>::_Type _UnsafeType;
91 template<
typename _Iterator>
95 ->
decltype(std::__make_reverse_iterator(__unsafe(__it.
base())))
96 {
return std::__make_reverse_iterator(__unsafe(__it.
base())); }
99#if __cplusplus >= 201103L
101 template<
typename _Iterator>
106 typename _Distance_traits<_Iterator>::__type& __dist)
111 template<
typename _Iterator>
113 inline typename _Distance_traits<_Iterator>::__type
118 template<
typename _Iterator,
typename _Size>
122 {
return __gnu_debug::__can_advance(__it.base(), __n); }
124 template<
typename _Iterator,
typename _Diff>
130 {
return __gnu_debug::__can_advance(__it.base(), __dist, __way); }
132 template<
typename _Iterator>
136 ->
decltype(std::make_move_iterator(__unsafe(__it.
base())))
137 {
return std::make_move_iterator(__unsafe(__it.
base())); }
139 template<
typename _Iterator>
143 ->
decltype(std::make_move_iterator(
__base(__it.
base())))
144 {
return std::make_move_iterator(
__base(__it.
base())); }
ISO C++ entities toplevel namespace is std.
GNU debug classes for public use.
constexpr _Distance_traits< _Iterator >::__type __get_distance(_Iterator __lhs, _Iterator __rhs, std::random_access_iterator_tag)
constexpr bool __valid_range(_InputIterator __first, _InputIterator __last, typename _Distance_traits< _InputIterator >::__type &__dist)
constexpr _Iterator __base(_Iterator __it)
constexpr iterator_type base() const noexcept(/*conditional */)
Struct holding two objects of arbitrary type.
Random-access iterators support a superset of bidirectional iterator operations.