Skip to content

Commit 96c5a1b

Browse files
committed
iter-value
1 parent 48da33f commit 96c5a1b

File tree

1 file changed

+15
-19
lines changed

1 file changed

+15
-19
lines changed

libcxx/include/__algorithm/radix_sort.h

Lines changed: 15 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -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

7068
template <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) {
123121
template <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(
212210
template <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

227225
template <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

245243
template <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

Comments
 (0)