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 _Diff>
60 {
return __can_advance(__it.
base(), __dist, -__way); }
62 template<
typename _Iterator,
typename _Sequence>
68#if __cplusplus < 201103L
69 template<
typename _Iterator>
70 struct _Unsafe_type<
std::reverse_iterator<_Iterator> >
72 typedef typename _Unsafe_type<_Iterator>::_Type _UnsafeType;
76 template<
typename _Iterator>
80 typedef typename _Unsafe_type<_Iterator>::_Type _UnsafeType;
84 template<
typename _Iterator>
87 ->
decltype(std::__make_reverse_iterator(__unsafe(__it.
base())))
88 {
return std::__make_reverse_iterator(__unsafe(__it.
base())); }
91#if __cplusplus >= 201103L
93 template<
typename _Iterator>
97 typename _Distance_traits<_Iterator>::__type& __dist)
98 {
return __valid_range(__first.base(), __last.base(), __dist); }
100 template<
typename _Iterator>
101 inline typename _Distance_traits<_Iterator>::__type
106 template<
typename _Iterator,
typename _Size>
109 {
return __can_advance(__it.base(), __n); }
111 template<
typename _Iterator,
typename _Diff>
116 {
return __can_advance(__it.base(), __dist, __way); }
118 template<
typename _Iterator>
121 ->
decltype(std::make_move_iterator(__unsafe(__it.
base())))
122 {
return std::make_move_iterator(__unsafe(__it.
base())); }
124 template<
typename _Iterator>
127 ->
decltype(std::make_move_iterator(
__base(__it.
base())))
128 {
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
Random-access iterators support a superset of bidirectional iterator operations.
Struct holding two objects of arbitrary type.