@@ -70,9 +70,6 @@ concept __simple_view = std::ranges::view<_R> && std::ranges::range<const _R> &&
70
70
std::same_as<std::ranges::iterator_t <_R>, std::ranges::iterator_t <const _R>> &&
71
71
std::same_as<std::ranges::sentinel_t <_R>, std::ranges::sentinel_t <const _R>>;
72
72
73
- template <bool _Const, typename ... _Views>
74
- using __iterators_type = __tuple_type<std::ranges::iterator_t <__internal::__maybe_const<_Const, _Views>>...>;
75
-
76
73
template <typename _ReturnAdapter, typename _F, typename _Tuple, std::size_t ... _Ip>
77
74
static decltype (auto )
78
75
__apply_to_tuple_impl(_ReturnAdapter __tr, _F __f, _Tuple& __t , std::index_sequence<_Ip...>)
@@ -137,6 +134,8 @@ class zip_view : public std::ranges::view_interface<zip_view<_Views...>>
137
134
using __rvalue_reference_type =
138
135
__tuple_type<std::ranges::range_rvalue_reference_t <__internal::__maybe_const<_Const, _Views>>...>;
139
136
137
+ using __iterators_type = __tuple_type<std::ranges::iterator_t <__internal::__maybe_const<_Const, _Views>>...>;
138
+
140
139
public:
141
140
iterator () = default ;
142
141
constexpr iterator (iterator<!_Const> i)
@@ -149,7 +148,7 @@ class zip_view : public std::ranges::view_interface<zip_view<_Views...>>
149
148
}
150
149
151
150
private:
152
- constexpr explicit iterator (__internal:: __iterators_type<_Const, _Views...> __current) : __current(std::move(__current)) {}
151
+ constexpr explicit iterator (__iterators_type __current) : __current(std::move(__current)) {}
153
152
154
153
public:
155
154
template <typename ... Iterators>
@@ -337,7 +336,7 @@ class zip_view : public std::ranges::view_interface<zip_view<_Views...>>
337
336
338
337
friend class zip_view ;
339
338
340
- __internal:: __iterators_type<_Const, _Views...> __current;
339
+ __iterators_type __current;
341
340
}; // class iterator
342
341
343
342
template <bool _Const>
@@ -407,8 +406,9 @@ class zip_view : public std::ranges::view_interface<zip_view<_Views...>>
407
406
begin ()
408
407
requires(!(__internal::__simple_view<_Views> && ...))
409
408
{
409
+ using __iterators_type = __tuple_type<std::ranges::iterator_t <__internal::__maybe_const<false , _Views>>...>;
410
410
auto __tr = [](auto &&... __args) {
411
- return iterator<false >(__internal:: __iterators_type< false , _Views...> (std::forward<decltype (__args)>(__args)...));
411
+ return iterator<false >(__iterators_type (std::forward<decltype (__args)>(__args)...));
412
412
};
413
413
return __internal::__apply_to_tuple (std::ranges::begin, __views, __tr);
414
414
}
@@ -417,8 +417,9 @@ class zip_view : public std::ranges::view_interface<zip_view<_Views...>>
417
417
begin () const
418
418
requires(std::ranges::range<const _Views> && ...)
419
419
{
420
+ using __iterators_type = __tuple_type<std::ranges::iterator_t <__internal::__maybe_const<true , _Views>>...>;
420
421
auto __tr = [](auto &&... __args) {
421
- return iterator<true >(__internal:: __iterators_type< true , _Views...> (std::forward<decltype (__args)>(__args)...));
422
+ return iterator<true >(__iterators_type (std::forward<decltype (__args)>(__args)...));
422
423
};
423
424
return __internal::__apply_to_tuple (std::ranges::begin, __views, __tr);
424
425
}
@@ -440,8 +441,9 @@ class zip_view : public std::ranges::view_interface<zip_view<_Views...>>
440
441
}
441
442
else
442
443
{
444
+ using __iterators_type = __tuple_type<std::ranges::iterator_t <__internal::__maybe_const<false , _Views>>...>;
443
445
auto __tr = [](auto &&... __args) {
444
- return iterator<false >(__internal:: __iterators_type< false , _Views...> (std::forward<decltype (__args)>(__args)...));
446
+ return iterator<false >(__iterators_type (std::forward<decltype (__args)>(__args)...));
445
447
};
446
448
return __internal::__apply_to_tuple (std::ranges::end, __views, __tr);
447
449
}
@@ -464,7 +466,8 @@ class zip_view : public std::ranges::view_interface<zip_view<_Views...>>
464
466
}
465
467
else
466
468
{
467
- auto __tr = [](auto &&... __args) { return iterator<true >(__internal::__iterators_type<true , _Views...>(__args...)); };
469
+ using __iterators_type = __tuple_type<std::ranges::iterator_t <__internal::__maybe_const<true , _Views>>...>;
470
+ auto __tr = [](auto &&... __args) { return iterator<true >(__iterators_type (__args...)); };
468
471
return __internal::__apply_to_tuple (std::ranges::end, __views, __tr);
469
472
}
470
473
}
0 commit comments