@@ -63,18 +63,18 @@ _LIBCPP_BEGIN_NAMESPACE_STD
6363
6464namespace ranges {
6565
66- template <class _T , class ... _Ts >
67- struct __extract_last : __extract_last<_Ts ...> {};
66+ template <class _T , class ... _Tp >
67+ struct __extract_last : __extract_last<_Tp ...> {};
6868
6969template <class _T >
7070struct __extract_last <_T> {
7171 using type = _T;
7272};
7373
74- template <class _T , class ... _Ts >
74+ template <class _T , class ... _Tp >
7575struct __derived_from_pack {
7676 constexpr static bool value =
77- __derived_from_pack<_T, typename __extract_last<_Ts ...>::type>::value && __derived_from_pack<_Ts ...>::value;
77+ __derived_from_pack<_T, typename __extract_last<_Tp ...>::type>::value && __derived_from_pack<_Tp ...>::value;
7878};
7979
8080template <class _T , class _IterCategory >
@@ -155,45 +155,45 @@ class concat_view : public view_interface<concat_view<_Views...>> {
155155
156156 _LIBCPP_HIDE_FROM_ABI constexpr explicit concat_view (_Views... views) : views_(std::move(views)...) {}
157157
158- constexpr iterator<false > begin ()
158+ _LIBCPP_HIDE_FROM_ABI constexpr iterator<false > begin ()
159159 requires(!(__simple_view<_Views> && ...))
160160 {
161161 iterator<false > it (this , in_place_index<0 >, ranges::begin (get<0 >(views_)));
162162 it.template satisfy <0 >();
163163 return it;
164164 }
165165
166- constexpr iterator<true > begin () const
166+ _LIBCPP_HIDE_FROM_ABI constexpr iterator<true > begin () const
167167 requires((range<const _Views> && ...) && __concatable<const _Views...>)
168168 {
169169 iterator<true > it (this , in_place_index<0 >, ranges::begin (get<0 >(views_)));
170170 it.template satisfy <0 >();
171171 return it;
172172 }
173173
174- constexpr auto end ()
174+ _LIBCPP_HIDE_FROM_ABI constexpr auto end ()
175175 requires(!(__simple_view<_Views> && ...))
176176 {
177177 if constexpr (common_range<typename __last_view<_Views...>::type>) {
178- constexpr auto N = sizeof ...(_Views);
179- return iterator<false >(this , in_place_index<N - 1 >, ranges::end (get<N - 1 >(views_)));
178+ constexpr auto __N = sizeof ...(_Views);
179+ return iterator<false >(this , in_place_index<__N - 1 >, ranges::end (get<__N - 1 >(views_)));
180180 } else {
181181 return default_sentinel;
182182 }
183183 }
184184
185- constexpr auto end () const
185+ _LIBCPP_HIDE_FROM_ABI constexpr auto end () const
186186 requires(range<const _Views> && ...)
187187 {
188188 if constexpr (common_range<typename __last_view<_Views...>::type>) {
189- constexpr auto N = sizeof ...(_Views);
190- return iterator<true >(this , in_place_index<N - 1 >, ranges::end (get<N - 1 >(views_)));
189+ constexpr auto __N = sizeof ...(_Views);
190+ return iterator<true >(this , in_place_index<__N - 1 >, ranges::end (get<__N - 1 >(views_)));
191191 } else {
192192 return default_sentinel;
193193 }
194194 }
195195
196- constexpr auto size ()
196+ _LIBCPP_HIDE_FROM_ABI constexpr auto size ()
197197 requires(sized_range<_Views> && ...)
198198 {
199199 return apply (
@@ -204,7 +204,7 @@ class concat_view : public view_interface<concat_view<_Views...>> {
204204 tuple_transform (ranges::size, views_));
205205 }
206206
207- constexpr auto size () const
207+ _LIBCPP_HIDE_FROM_ABI constexpr auto size () const
208208 requires(sized_range<const _Views> && ...)
209209 {
210210 return apply (
@@ -255,7 +255,7 @@ class concat_view<_Views...>::iterator {
255255 __maybe_const<_Const, concat_view>* parent_ = nullptr ;
256256
257257 template <std::size_t N>
258- constexpr void satisfy () {
258+ _LIBCPP_HIDE_FROM_ABI constexpr void satisfy () {
259259 if constexpr (N < (sizeof ...(_Views) - 1 )) {
260260 if (get<N>(it_) == ranges::end (get<N>(parent_->views_ ))) {
261261 it_.template emplace <N + 1 >(ranges::begin (get<N + 1 >(parent_->views_ )));
@@ -265,7 +265,7 @@ class concat_view<_Views...>::iterator {
265265 }
266266
267267 template <std::size_t N>
268- constexpr void prev () {
268+ _LIBCPP_HIDE_FROM_ABI constexpr void prev () {
269269 if constexpr (N == 0 ) {
270270 --get<0 >(it_);
271271 } else {
@@ -285,7 +285,7 @@ class concat_view<_Views...>::iterator {
285285 }
286286
287287 template <std::size_t N>
288- constexpr void advance_fwd (difference_type offset, difference_type steps) {
288+ _LIBCPP_HIDE_FROM_ABI constexpr void advance_fwd (difference_type offset, difference_type steps) {
289289 using underlying_diff_type = iter_difference_t <variant_alternative_t <N, base_iter>>;
290290 if constexpr (N == sizeof ...(_Views) - 1 ) {
291291 get<N>(it_) += static_cast <underlying_diff_type>(steps);
@@ -301,7 +301,7 @@ class concat_view<_Views...>::iterator {
301301 }
302302
303303 template <std::size_t N>
304- constexpr void advance_bwd (difference_type offset, difference_type steps) {
304+ _LIBCPP_HIDE_FROM_ABI constexpr void advance_bwd (difference_type offset, difference_type steps) {
305305 using underlying_diff_type = iter_difference_t <variant_alternative_t <N, base_iter>>;
306306 if constexpr (N == 0 ) {
307307 get<N>(it_) -= static_cast <underlying_diff_type>(steps);
@@ -317,12 +317,12 @@ class concat_view<_Views...>::iterator {
317317 }
318318
319319 template <size_t ... Is, typename Func>
320- constexpr void apply_fn_with_const_index (size_t index, Func&& func, std::index_sequence<Is...>) {
320+ _LIBCPP_HIDE_FROM_ABI constexpr void apply_fn_with_const_index (size_t index, Func&& func, std::index_sequence<Is...>) {
321321 ((index == Is ? (func (std::integral_constant<size_t , Is>{}), 0 ) : 0 ), ...);
322322 }
323323
324324 template <size_t N, typename Func>
325- constexpr void apply_fn_with_const_index (size_t index, Func&& func) {
325+ _LIBCPP_HIDE_FROM_ABI constexpr void apply_fn_with_const_index (size_t index, Func&& func) {
326326 apply_fn_with_const_index (index, std::forward<Func>(func), std::make_index_sequence<N>{});
327327 }
328328
@@ -332,18 +332,18 @@ class concat_view<_Views...>::iterator {
332332 : it_(std::forward<Args>(args)...), parent_(parent) {}
333333
334334public:
335- iterator () = default ;
335+ _LIBCPP_HIDE_FROM_ABI iterator () = default;
336336
337- constexpr iterator (iterator<!_Const> i)
337+ _LIBCPP_HIDE_FROM_ABI constexpr iterator (iterator<!_Const> i)
338338 requires _Const && (convertible_to<iterator_t <_Views>, iterator_t <const _Views>> && ...)
339339 : it_(base_iter(in_place_index<i.index()>, std::get<i.index()>(std::move(i.it_)))), parent_(i.parent_) {}
340340
341- constexpr decltype (auto ) operator*() const {
341+ _LIBCPP_HIDE_FROM_ABI constexpr decltype (auto ) operator*() const {
342342 using reference = __concat_reference_t <__maybe_const<_Const, _Views>...>;
343343 return std::visit ([](auto && it) -> reference { return *it; }, it_);
344344 }
345345
346- constexpr iterator& operator ++() {
346+ _LIBCPP_HIDE_FROM_ABI constexpr iterator& operator ++() {
347347 size_t active_index = it_.index ();
348348 apply_fn_with_const_index<std::variant_size_v<decltype (it_)>>(active_index, [&](auto index_constant) {
349349 constexpr size_t i = index_constant.value ;
@@ -353,17 +353,17 @@ class concat_view<_Views...>::iterator {
353353 return *this ;
354354 }
355355
356- constexpr void operator ++(int ) { ++*this ; }
356+ _LIBCPP_HIDE_FROM_ABI constexpr void operator ++(int ) { ++*this ; }
357357
358- constexpr iterator operator ++(int )
358+ _LIBCPP_HIDE_FROM_ABI constexpr iterator operator ++(int )
359359 requires (forward_range<__maybe_const<_Const, _Views>> && ...)
360360 {
361361 auto tmp = *this ;
362362 ++*this ;
363363 return tmp;
364364 }
365365
366- constexpr iterator& operator --()
366+ _LIBCPP_HIDE_FROM_ABI constexpr iterator& operator --()
367367 requires __concat_is_bidirectional<_Const, _Views...>
368368 {
369369 size_t active_index = it_.index ();
@@ -374,41 +374,41 @@ class concat_view<_Views...>::iterator {
374374 return *this ;
375375 }
376376
377- constexpr iterator operator --(int )
377+ _LIBCPP_HIDE_FROM_ABI constexpr iterator operator --(int )
378378 requires __concat_is_bidirectional<_Const, _Views...>
379379 {
380380 auto __tmp = *this ;
381381 --*this ;
382382 return __tmp;
383383 }
384384
385- friend constexpr bool operator ==(const iterator& x, const iterator& y)
385+ _LIBCPP_HIDE_FROM_ABI friend constexpr bool operator ==(const iterator& x, const iterator& y)
386386 requires (equality_comparable<iterator_t <__maybe_const<_Const, _Views>>> && ...)
387387 {
388388 return x.it_ == y.it_ ;
389389 }
390390
391- constexpr decltype (auto ) operator[](difference_type n) const
391+ _LIBCPP_HIDE_FROM_ABI constexpr decltype (auto ) operator[](difference_type n) const
392392 requires __concat_is_random_access<_Const, _Views...>
393393 {
394394 return *((*this ) + n);
395395 }
396396
397- friend constexpr iterator operator +(const iterator& it, difference_type n)
397+ _LIBCPP_HIDE_FROM_ABI friend constexpr iterator operator +(const iterator& it, difference_type n)
398398 requires __concat_is_random_access<_Const, _Views...>
399399 {
400400 auto temp = it;
401401 temp += n;
402402 return temp;
403403 }
404404
405- friend constexpr iterator operator +(difference_type n, const iterator& it)
405+ _LIBCPP_HIDE_FROM_ABI friend constexpr iterator operator +(difference_type n, const iterator& it)
406406 requires __concat_is_random_access<_Const, _Views...>
407407 {
408408 return it + n;
409409 }
410410
411- constexpr iterator& operator +=(difference_type n)
411+ _LIBCPP_HIDE_FROM_ABI constexpr iterator& operator +=(difference_type n)
412412 requires __concat_is_random_access<_Const, _Views...>
413413 {
414414 size_t active_index = it_.index ();
@@ -443,51 +443,51 @@ class concat_view<_Views...>::iterator {
443443 return *this ;
444444 }
445445
446- constexpr iterator& operator -=(difference_type n)
446+ _LIBCPP_HIDE_FROM_ABI constexpr iterator& operator -=(difference_type n)
447447 requires __concat_is_random_access<_Const, _Views...>
448448 {
449449 *this += -n;
450450 return *this ;
451451 }
452452
453- friend constexpr bool operator ==(const iterator& it, default_sentinel_t ) {
453+ _LIBCPP_HIDE_FROM_ABI friend constexpr bool operator ==(const iterator& it, default_sentinel_t ) {
454454 constexpr auto last_idx = sizeof ...(_Views) - 1 ;
455455 return it.it_ .index () == last_idx &&
456456 std::get<last_idx>(it.it_ ) == ranges::end (std::get<last_idx>(it.parent_ ->views_ ));
457457 }
458458
459- friend constexpr bool operator <(const iterator& x, const iterator& y)
459+ _LIBCPP_HIDE_FROM_ABI friend constexpr bool operator <(const iterator& x, const iterator& y)
460460 requires (random_access_range<__maybe_const<_Const, _Views>> && ...)
461461 {
462462 return x.it_ < y.it_ ;
463463 }
464464
465- friend constexpr bool operator >(const iterator& x, const iterator& y)
465+ _LIBCPP_HIDE_FROM_ABI friend constexpr bool operator >(const iterator& x, const iterator& y)
466466 requires (random_access_range<__maybe_const<_Const, _Views>> && ...)
467467 {
468468 return x.it_ > y.it_ ;
469469 }
470470
471- friend constexpr bool operator <=(const iterator& x, const iterator& y)
471+ _LIBCPP_HIDE_FROM_ABI friend constexpr bool operator <=(const iterator& x, const iterator& y)
472472 requires (random_access_range<__maybe_const<_Const, _Views>> && ...)
473473 {
474474 return x.it_ <= y.it_ ;
475475 }
476476
477- friend constexpr bool operator >=(const iterator& x, const iterator& y)
477+ _LIBCPP_HIDE_FROM_ABI friend constexpr bool operator >=(const iterator& x, const iterator& y)
478478 requires (random_access_range<__maybe_const<_Const, _Views>> && ...)
479479 {
480480 return x.it_ >= y.it_ ;
481481 }
482482
483- friend constexpr auto operator <=>(const iterator& x, const iterator& y)
483+ _LIBCPP_HIDE_FROM_ABI friend constexpr auto operator <=>(const iterator& x, const iterator& y)
484484 requires ((random_access_range<__maybe_const<_Const, _Views>> && ...) &&
485485 (three_way_comparable<__maybe_const<_Const, _Views>> && ...))
486486 {
487487 return x.it_ <=> y.it_ ;
488488 }
489489
490- friend constexpr decltype (auto ) iter_move(const iterator& it) noexcept (
490+ _LIBCPP_HIDE_FROM_ABI friend constexpr decltype (auto ) iter_move(const iterator& it) noexcept (
491491
492492 ((is_nothrow_invocable_v< decltype (ranges::iter_move), const iterator_t<__maybe_const<_Const, _Views>>& >) &&
493493 ...) &&
@@ -503,7 +503,7 @@ class concat_view<_Views...>::iterator {
503503 it.it_ );
504504 }
505505
506- friend constexpr void iter_swap (const iterator& x, const iterator& y)
506+ _LIBCPP_HIDE_FROM_ABI friend constexpr void iter_swap (const iterator& x, const iterator& y)
507507
508508 noexcept ((noexcept (ranges::swap(*x, *y))) &&
509509 (noexcept (ranges::iter_swap(std::declval<const iterator_t <__maybe_const<_Const, _Views>>>(),
@@ -525,7 +525,7 @@ class concat_view<_Views...>::iterator {
525525 y.it_ );
526526 }
527527
528- friend constexpr difference_type operator -(const iterator& x, const iterator& y)
528+ _LIBCPP_HIDE_FROM_ABI friend constexpr difference_type operator -(const iterator& x, const iterator& y)
529529 requires __concat_is_random_access<_Const, _Views...>
530530 {
531531 size_t ix = x.it_ .index ();
@@ -560,15 +560,15 @@ class concat_view<_Views...>::iterator {
560560 }
561561 }
562562
563- friend constexpr iterator operator -(const iterator& it, difference_type n)
563+ _LIBCPP_HIDE_FROM_ABI friend constexpr iterator operator -(const iterator& it, difference_type n)
564564 requires __concat_is_random_access<_Const, _Views...>
565565 {
566566 auto temp = it;
567567 temp -= n;
568568 return temp;
569569 }
570570
571- friend constexpr difference_type operator -(const iterator& x, default_sentinel_t )
571+ _LIBCPP_HIDE_FROM_ABI friend constexpr difference_type operator -(const iterator& x, default_sentinel_t )
572572 requires (sized_sentinel_for<sentinel_t <__maybe_const<_Const, _Views>>, iterator_t <__maybe_const<_Const, _Views>>> &&
573573 ...) &&
574574 (__apply_drop_first<_Const, _Views...>::value)
@@ -591,7 +591,7 @@ class concat_view<_Views...>::iterator {
591591 x.it_ );
592592 }
593593
594- friend constexpr difference_type operator -(default_sentinel_t , const iterator& x)
594+ _LIBCPP_HIDE_FROM_ABI friend constexpr difference_type operator -(default_sentinel_t , const iterator& x)
595595 requires (sized_sentinel_for<sentinel_t <__maybe_const<_Const, _Views>>, iterator_t <__maybe_const<_Const, _Views>>> &&
596596 ...) &&
597597 (__apply_drop_first<_Const, _Views...>::value)
@@ -605,8 +605,7 @@ namespace __concat {
605605struct __fn {
606606 template <class ... _Views>
607607 [[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr auto operator ()(_Views... views) const
608- noexcept (noexcept (concat_view(std::forward<_Views>(views)...)))
609- -> decltype(concat_view(std::forward<_Views>(views)...)) {
608+ noexcept (noexcept (concat_view(std::forward<_Views>(views)...))) -> decltype(concat_view(std::forward<_Views>(views)...)) {
610609 return concat_view (std::forward<_Views>(views)...);
611610 }
612611};
0 commit comments