diff --git a/libcxx/include/__ranges/concat_view.h b/libcxx/include/__ranges/concat_view.h index f5f9add0d835fe5..881e5fb31ea7a0f 100644 --- a/libcxx/include/__ranges/concat_view.h +++ b/libcxx/include/__ranges/concat_view.h @@ -127,8 +127,9 @@ concept concatable = requires { // exposition only template concept concat_is_random_access = - (all_random_access) && - (sized_range> && ...); + (random_access_range<__maybe_const<_Const, _Rs>> && ...) + && + (sized_range<__maybe_const> && ...); template concept constant_time_reversible = // exposition only @@ -138,9 +139,9 @@ concept constant_time_reversible = // exposition only template concept concat_is_bidirectional = ( - (bidirectional_range> && ... ) + (bidirectional_range<__maybe_const> && ... ) && - (constant_time_reversible> && ... ) + (constant_time_reversible<__maybe_const> && ... ) ); @@ -161,7 +162,7 @@ class concat_view : public view_interface> constexpr explicit concat_view(Views... views): views_(views...) {} - constexpr iterator begin() requires(!(simple_view && ...)) + constexpr iterator begin() requires(!(__simple_view && ...)) { iterator it(this, in_place_index<0>, ranges::begin(get<0>(views_))); it.template satisfy<0>(); @@ -176,7 +177,7 @@ class concat_view : public view_interface> return it; } - constexpr auto end() requires(!(simple_view && ...)) + constexpr auto end() requires(!(__simple_view && ...)) { if constexpr (common_range::type>) { // last_view to be implemented @@ -234,9 +235,9 @@ template public: //using iterator_category = see below; // not always present. - using derive_pack_random_iterator = derived_from_pack>>::iterator_category..., random_access_iterator_tag>::value; - using derive_pack_bidirectional_iterator = derived_from_pack>>::iterator_category..., bidirectional_iterator_tag>::value; - using derive_pack_forward_iterator = derived_from_pack>>::iterator_category..., forward_iterator_tag>::value; + using derive_pack_random_iterator = derived_from_pack>>::iterator_category..., random_access_iterator_tag>::value; + using derive_pack_bidirectional_iterator = derived_from_pack>>::iterator_category..., bidirectional_iterator_tag>::value; + using derive_pack_forward_iterator = derived_from_pack>>::iterator_category..., forward_iterator_tag>::value; using iterator_concept = _If...>>, input_iterator_tag, _If