diff --git a/libcxx/include/__ranges/lazy_split_view.h b/libcxx/include/__ranges/lazy_split_view.h index 2c654bfd325a6..8ed4bcfdeb56d 100644 --- a/libcxx/include/__ranges/lazy_split_view.h +++ b/libcxx/include/__ranges/lazy_split_view.h @@ -437,7 +437,7 @@ lazy_split_view(_Range&&, range_value_t<_Range>) namespace views { namespace __lazy_split_view { -struct __fn : __range_adaptor_closure<__fn> { +struct __fn { template [[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr auto operator()(_Range&& __range, _Pattern&& __pattern) const diff --git a/libcxx/include/__ranges/split_view.h b/libcxx/include/__ranges/split_view.h index a27ac4ef7a196..7f03be3c346a4 100644 --- a/libcxx/include/__ranges/split_view.h +++ b/libcxx/include/__ranges/split_view.h @@ -194,7 +194,7 @@ struct split_view<_View, _Pattern>::__sentinel { namespace views { namespace __split_view { -struct __fn : __range_adaptor_closure<__fn> { +struct __fn { // clang-format off template _LIBCPP_NODISCARD_EXT _LIBCPP_HIDE_FROM_ABI diff --git a/libcxx/test/std/ranges/range.adaptors/range.lazy.split/adaptor.pass.cpp b/libcxx/test/std/ranges/range.adaptors/range.lazy.split/adaptor.pass.cpp index da4bd9fbbe179..6bfa0ab487ba1 100644 --- a/libcxx/test/std/ranges/range.adaptors/range.lazy.split/adaptor.pass.cpp +++ b/libcxx/test/std/ranges/range.adaptors/range.lazy.split/adaptor.pass.cpp @@ -40,10 +40,16 @@ static_assert(!std::is_invocable_v); static_assert( std::is_invocable_v); -static_assert( CanBePiped); -static_assert( CanBePiped); -static_assert(!CanBePiped); -static_assert(!CanBePiped); +// Regression test for #75002, views::lazy_split shouldn't be a range adaptor closure +static_assert(!CanBePiped); +static_assert(!CanBePiped); +static_assert(!CanBePiped); +static_assert(!CanBePiped); + +static_assert(CanBePiped); +static_assert(CanBePiped); +static_assert(!CanBePiped); +static_assert(!CanBePiped); static_assert(std::same_as); diff --git a/libcxx/test/std/ranges/range.adaptors/range.split/adaptor.pass.cpp b/libcxx/test/std/ranges/range.adaptors/range.split/adaptor.pass.cpp index cd12011daeab5..85d13ac5c29df 100644 --- a/libcxx/test/std/ranges/range.adaptors/range.split/adaptor.pass.cpp +++ b/libcxx/test/std/ranges/range.adaptors/range.split/adaptor.pass.cpp @@ -39,10 +39,16 @@ static_assert(!std::is_invocable_v); static_assert( std::is_invocable_v); -static_assert( CanBePiped); -static_assert( CanBePiped); -static_assert(!CanBePiped); -static_assert(!CanBePiped); +// Regression test for #75002, views::split shouldn't be a range adaptor closure +static_assert(!CanBePiped); +static_assert(!CanBePiped); +static_assert(!CanBePiped); +static_assert(!CanBePiped); + +static_assert(CanBePiped); +static_assert(CanBePiped); +static_assert(!CanBePiped); +static_assert(!CanBePiped); static_assert(std::same_as);