29 #ifndef _GLIBCXX_DEBUG_HELPER_FUNCTIONS_H
30 #define _GLIBCXX_DEBUG_HELPER_FUNCTIONS_H 1
51 template<
typename _Iterator,
52 typename =
typename std::__is_integer<_Iterator>::__type>
53 struct _Distance_traits
57 typename std::iterator_traits<_Iterator>::difference_type _ItDiffType;
59 template<
typename _DiffType,
60 typename =
typename std::__is_void<_DiffType>::__type>
62 {
typedef _DiffType __type; };
64 template<
typename _DiffType>
65 struct _DiffTraits<_DiffType,
std::__true_type>
66 {
typedef std::ptrdiff_t __type; };
68 typedef typename _DiffTraits<_ItDiffType>::__type _DiffType;
74 template<
typename _Integral>
75 struct _Distance_traits<_Integral,
std::__true_type>
81 template<
typename _Iterator>
82 inline typename _Distance_traits<_Iterator>::__type
87 template<
typename _Iterator>
88 inline typename _Distance_traits<_Iterator>::__type
98 template<
typename _Iterator>
99 inline typename _Distance_traits<_Iterator>::__type
107 template<
typename _Integral>
120 template<
typename _InputIterator>
123 const _InputIterator& __last,
133 if (__dist.
first == 0)
138 return __dist.
first >= 0;
149 template<
typename _InputIterator>
154 typedef typename std::__is_integer<_InputIterator>::__type _Integral;
158 template<
typename _InputIterator>
160 __valid_range(
const _InputIterator& __first,
const _InputIterator& __last)
162 typename _Distance_traits<_InputIterator>::__type __dist;
166 #if __cplusplus < 201103L
168 template<
typename _Iterator>
169 struct __is_safe_random_iterator
171 enum { __value = 0 };
172 typedef std::__false_type __type;
175 template<
typename _Iterator>
177 : std::_Iter_base<_Iterator, __is_safe_random_iterator<_Iterator>::__value>
186 template<
typename _Iterator>
187 inline typename _Siter_base<_Iterator>::iterator_type
188 __base(_Iterator __it)
189 {
return _Siter_base<_Iterator>::_S_base(__it); }
191 template<
typename _Iterator>
193 __base(_Iterator __it)
197 #if __cplusplus < 201103L
198 template<
typename _Iterator>
200 {
typedef _Iterator _Type; };
204 template<
typename _Iterator>
206 __unsafe(_Iterator __it)