@@ -48,14 +48,12 @@ _LIBCPP_BEGIN_NAMESPACE_STD
4848
4949#if _LIBCPP_STD_VER >= 14
5050
51- template <class _Iterator ,
52- enable_if_t <is_move_assignable<typename iterator_traits<_Iterator>::value_type>::value, int > = 0 >
51+ template <class _Iterator , enable_if_t <is_move_assignable<__iter_value_type<_Iterator>>::value, int > = 0 >
5352_LIBCPP_HIDE_FROM_ABI constexpr move_iterator<_Iterator> __move_assign_please (_Iterator __i) {
5453 return std::make_move_iterator (std::move (__i));
5554}
5655
57- template <class _Iterator ,
58- enable_if_t <!is_move_assignable<typename iterator_traits<_Iterator>::value_type>::value, int > = 0 >
56+ template <class _Iterator , enable_if_t <!is_move_assignable<__iter_value_type<_Iterator>>::value, int > = 0 >
5957_LIBCPP_HIDE_FROM_ABI constexpr _Iterator __move_assign_please (_Iterator __i) {
6058 return __i;
6159}
@@ -68,14 +66,14 @@ _LIBCPP_HIDE_FROM_ABI constexpr _UnsignedInteger __intlog2(_UnsignedInteger __n)
6866}
6967
7068template <class _InputIterator , class _OutputIterator >
71- _LIBCPP_HIDE_FROM_ABI pair<_OutputIterator, typename iterator_traits <_InputIterator>::value_type >
69+ _LIBCPP_HIDE_FROM_ABI pair<_OutputIterator, __iter_value_type <_InputIterator>>
7270__partial_sum_max (_InputIterator __first, _InputIterator __last, _OutputIterator __result) {
7371 if (__first == __last)
7472 return {__result, 0 };
7573
76- auto __max = *__first;
77- typename iterator_traits <_InputIterator>::value_type __sum = *__first;
78- *__result = __sum;
74+ auto __max = *__first;
75+ __iter_value_type <_InputIterator> __sum = *__first;
76+ *__result = __sum;
7977
8078 while (++__first != __last) {
8179 if (__max < *__first) {
@@ -123,7 +121,7 @@ _LIBCPP_HIDE_FROM_ABI auto __nth_radix(size_t __radix_number, _Radix __radix) {
123121template <class _ForwardIterator , class _Map , class _RandomAccessIterator >
124122_LIBCPP_HIDE_FROM_ABI void
125123__collect (_ForwardIterator __first, _ForwardIterator __last, _Map __map, _RandomAccessIterator __counters) {
126- using value_type = typename iterator_traits <_ForwardIterator>::value_type ;
124+ using value_type = __iter_value_type <_ForwardIterator>;
127125 using traits = __counting_sort_traits<value_type, _Map>;
128126
129127 std::for_each (__first, __last, [&__counters, &__map](const auto & __preimage) { ++__counters[__map (__preimage)]; });
@@ -159,7 +157,7 @@ _LIBCPP_HIDE_FROM_ABI bool __collect_impl(
159157 _RandomAccessIterator1 __counters,
160158 _RandomAccessIterator2 __maximums,
161159 index_sequence<_Radices...>) {
162- using value_type = typename iterator_traits <_ForwardIterator>::value_type ;
160+ using value_type = __iter_value_type <_ForwardIterator>;
163161 constexpr auto __radix_value_range = __radix_sort_traits<value_type, _Map, _Radix>::__radix_value_range;
164162
165163 auto __previous = numeric_limits<invoke_result_t <_Map, value_type> >::min ();
@@ -188,7 +186,7 @@ __collect(_ForwardIterator __first,
188186 _Radix __radix,
189187 _RandomAccessIterator1 __counters,
190188 _RandomAccessIterator2 __maximums) {
191- using value_type = typename iterator_traits <_ForwardIterator>::value_type ;
189+ using value_type = __iter_value_type <_ForwardIterator>;
192190 constexpr auto __radix_count = __radix_sort_traits<value_type, _Map, _Radix>::__radix_count;
193191 return std::__collect_impl (
194192 __first, __last, __map, __radix, __counters, __maximums, make_index_sequence<__radix_count>());
@@ -212,7 +210,7 @@ _LIBCPP_HIDE_FROM_ABI void __dispose_backward(
212210template <class _ForwardIterator , class _RandomAccessIterator , class _Map >
213211_LIBCPP_HIDE_FROM_ABI _RandomAccessIterator
214212__counting_sort_impl (_ForwardIterator __first, _ForwardIterator __last, _RandomAccessIterator __result, _Map __map) {
215- using value_type = typename iterator_traits <_ForwardIterator>::value_type ;
213+ using value_type = __iter_value_type <_ForwardIterator>;
216214 using traits = __counting_sort_traits<value_type, _Map>;
217215
218216 using difference_type = typename iterator_traits<_RandomAccessIterator>::difference_type;
@@ -225,9 +223,9 @@ __counting_sort_impl(_ForwardIterator __first, _ForwardIterator __last, _RandomA
225223}
226224
227225template <class _RandomAccessIterator1 , class _RandomAccessIterator2 , class _Map , class _Radix >
228- _LIBCPP_HIDE_FROM_ABI typename enable_if<
229- __radix_sort_traits<typename iterator_traits <_RandomAccessIterator1>::value_type , _Map, _Radix>::__radix_count == 1 ,
230- void >::type
226+ _LIBCPP_HIDE_FROM_ABI
227+ typename enable_if< __radix_sort_traits<__iter_value_type <_RandomAccessIterator1>, _Map, _Radix>::__radix_count == 1 ,
228+ void >::type
231229__radix_sort_impl (_RandomAccessIterator1 __first,
232230 _RandomAccessIterator1 __last,
233231 _RandomAccessIterator2 buffer,
@@ -244,16 +242,14 @@ __radix_sort_impl(_RandomAccessIterator1 __first,
244242
245243template <class _RandomAccessIterator1 , class _RandomAccessIterator2 , class _Map , class _Radix >
246244_LIBCPP_HIDE_FROM_ABI typename enable_if<
247- __radix_sort_traits<typename iterator_traits<_RandomAccessIterator1>::value_type, _Map, _Radix>::__radix_count %
248- 2 ==
249- 0 ,
245+ __radix_sort_traits<__iter_value_type<_RandomAccessIterator1>, _Map, _Radix>::__radix_count % 2 == 0 ,
250246 void >::type
251247__radix_sort_impl (_RandomAccessIterator1 __first,
252248 _RandomAccessIterator1 __last,
253249 _RandomAccessIterator2 __buffer_begin,
254250 _Map __map,
255251 _Radix __radix) {
256- using value_type = typename iterator_traits <_RandomAccessIterator1>::value_type ;
252+ using value_type = __iter_value_type <_RandomAccessIterator1>;
257253 using traits = __radix_sort_traits<value_type, _Map, _Radix>;
258254
259255 using difference_type = typename iterator_traits<_RandomAccessIterator1>::difference_type;
0 commit comments