@@ -67,8 +67,20 @@ _LIBCPP_BEGIN_NAMESPACE_STD
6767
6868namespace ranges {
6969
70+ # ifdef __cpp_pack_indexing
7071template <class ... _Tp>
7172using __extract_last = _Tp...[sizeof ...(_Tp) - 1 ];
73+ # else
74+ template <class _Tp , class ... _Tail>
75+ struct __extract_last_impl : __extract_last<_Tail...> {};
76+ template <class _Tp >
77+ struct __extract_last_impl <_Tp> {
78+ using type = _Tp;
79+ };
80+
81+ template <class ... _Tp>
82+ using __extract_last = __extract_last_impl<_Tp...>::type;
83+ # endif
7284
7385template <class _Tp , class ... _Tail>
7486constexpr bool __derived_from_pack =
@@ -268,8 +280,8 @@ class concat_view<_Views...>::__iterator {
268280 if constexpr (common_range<prev_view>) {
269281 it_.template emplace <_Idx - 1 >(ranges::end (std::get<_Idx - 1 >(parent_->__views_ )));
270282 } else {
271- it_.template emplace <_Idx - 1 >(ranges::__next (
272- ranges::begin (std::get<_Idx - 1 >(parent_-> __views_ )), ranges::size (std::get<_Idx - 1 >(parent_->__views_ ))));
283+ it_.template emplace <_Idx - 1 >(ranges::__next (ranges::begin (std::get<_Idx - 1 >(parent_-> __views_ )),
284+ ranges::size (std::get<_Idx - 1 >(parent_->__views_ ))));
273285 }
274286 prev<_Idx - 1 >();
275287 } else {
@@ -601,8 +613,9 @@ namespace views {
601613namespace __concat {
602614struct __fn {
603615 template <class ... _Views>
604- [[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr auto operator ()(_Views... __views) const noexcept (
605- noexcept (concat_view(std::forward<_Views>(__views)...))) -> decltype(concat_view(std::forward<_Views>(__views)...)) {
616+ [[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr auto operator ()(_Views... __views) const
617+ noexcept (noexcept (concat_view(std::forward<_Views>(__views)...)))
618+ -> decltype(concat_view(std::forward<_Views>(__views)...)) {
606619 return concat_view (std::forward<_Views>(__views)...);
607620 }
608621};
0 commit comments