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 #if __cplusplus < 201103L 51 template<
typename _Iterator>
52 struct __is_safe_random_iterator<
std::reverse_iterator<_Iterator> >
53 : __is_safe_random_iterator<_Iterator>
56 template<
typename _Iterator>
57 struct _Unsafe_type<std::reverse_iterator<_Iterator> >
59 typedef typename _Unsafe_type<_Iterator>::_Type _UnsafeType;
63 template<
typename _Iterator>
67 typedef typename _Unsafe_type<_Iterator>::_Type _UnsafeType;
71 template<
typename _Iterator>
74 -> decltype(std::__make_reverse_iterator(__base(__it.base())))
75 {
return std::__make_reverse_iterator(__base(__it.base())); }
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>
102 -> decltype(std::make_move_iterator(__unsafe(__it.base())))
103 {
return std::make_move_iterator(__unsafe(__it.base())); }
105 template<
typename _Iterator>
108 -> decltype(std::make_move_iterator(__base(__it.base())))
109 {
return std::make_move_iterator(__base(__it.base())); }
_Distance_traits< _Iterator >::__type __get_distance(const _Iterator &__lhs, const _Iterator &__rhs, std::random_access_iterator_tag)
bool __valid_range(const _InputIterator &__first, const _InputIterator &__last, typename _Distance_traits< _InputIterator >::__type &__dist)
ISO C++ entities toplevel namespace is std.
GNU debug classes for public use.
_GLIBCXX17_CONSTEXPR iterator_type base() const