@@ -34,27 +34,26 @@ _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 void __for_each(_InputIterat
3434
3535// __segment_processor handles the per-segment processing by applying the function object __func_ to each
3636// element within the segment.
37- template <class _SegmentedIterator , class _Func >
37+ template <class _Func >
3838struct __segment_processor {
39- using _Traits _LIBCPP_NODEBUG = __segmented_iterator_traits<_SegmentedIterator>;
40-
4139 _Func& __func_;
4240
4341 _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR explicit __segment_processor (_Func& __f) : __func_(__f) {}
4442
43+ template <class _SegmentedIterator >
4544 _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 void
46- operator ()(typename _Traits::__local_iterator __lfirst, typename _Traits::__local_iterator __llast) {
45+ operator ()(typename __segmented_iterator_traits<_SegmentedIterator>::__local_iterator __lfirst,
46+ typename __segmented_iterator_traits<_SegmentedIterator>::__local_iterator __llast) {
4747 std::__for_each (__lfirst, __llast, __func_);
4848 }
4949};
5050
5151template <class _SegmentedIterator ,
5252 class _Function ,
5353 __enable_if_t <__is_segmented_iterator<_SegmentedIterator>::value, int > = 0 >
54- _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 _Function
55- __for_each (_SegmentedIterator __first, _SegmentedIterator __last, _Function __func) {
56- std::__for_each_segment (__first, __last, std::__segment_processor<_SegmentedIterator, _Function>(__func));
57- return __func;
54+ _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 void
55+ __for_each (_SegmentedIterator __first, _SegmentedIterator __last, _Function& __func) {
56+ std::__for_each_segment (__first, __last, std::__segment_processor<_Function>(__func));
5857}
5958
6059template <class _InputIterator , class _Function >
0 commit comments