diff --git a/libstdc++-v3/include/std/ranges b/libstdc++-v3/include/std/ranges index ad69a94b21fb81de6d55f573f2bb2f6ce6ceeb77..5c795a90fbc29ddbacbed8c32a753a06e6662c62 100644 --- a/libstdc++-v3/include/std/ranges +++ b/libstdc++-v3/include/std/ranges @@ -1145,7 +1145,7 @@ namespace views::__adaptor // which makes overload resolution failure diagnostics more concise. template<typename _Adaptor, typename... _Args> requires __adaptor_has_simple_extra_args<_Adaptor, _Args...> - && (is_trivially_copyable_v<_Args> && ...) + && (is_trivially_copy_constructible_v<_Args> && ...) struct _Partial<_Adaptor, _Args...> : _RangeAdaptorClosure<_Partial<_Adaptor, _Args...>> { tuple<_Args...> _M_args; @@ -1176,7 +1176,7 @@ namespace views::__adaptor // where _Adaptor accepts a single extra argument. template<typename _Adaptor, typename _Arg> requires __adaptor_has_simple_extra_args<_Adaptor, _Arg> - && is_trivially_copyable_v<_Arg> + && is_trivially_copy_constructible_v<_Arg> struct _Partial<_Adaptor, _Arg> : _RangeAdaptorClosure<_Partial<_Adaptor, _Arg>> { _Arg _M_arg; diff --git a/libstdc++-v3/testsuite/std/ranges/adaptors/adjacent_transform/1.cc b/libstdc++-v3/testsuite/std/ranges/adaptors/adjacent_transform/1.cc index a5791b3da702a2b511091bdf7c1faf368f89409a..772e4b3b6a0d15d15eeca317b370d541e8e23cd2 100644 --- a/libstdc++-v3/testsuite/std/ranges/adaptors/adjacent_transform/1.cc +++ b/libstdc++-v3/testsuite/std/ranges/adaptors/adjacent_transform/1.cc @@ -110,6 +110,7 @@ test04() }; // P2494R2 Relaxing range adaptors to allow for move only types static_assert( requires { views::pairwise_transform(x, move_only{}); } ); + static_assert( requires { x | views::pairwise_transform(move_only{}); } ); } int diff --git a/libstdc++-v3/testsuite/std/ranges/adaptors/transform.cc b/libstdc++-v3/testsuite/std/ranges/adaptors/transform.cc index dfc91fb5e1fb0bd12b3fe9153623461fbe60bae4..934d2f65dcf0e15efff3f75504110135010c2555 100644 --- a/libstdc++-v3/testsuite/std/ranges/adaptors/transform.cc +++ b/libstdc++-v3/testsuite/std/ranges/adaptors/transform.cc @@ -191,8 +191,10 @@ test09() #if __cpp_lib_ranges >= 202207L // P2494R2 Relaxing range adaptors to allow for move only types static_assert( requires { transform(x, move_only{}); } ); + static_assert( requires { x | transform(move_only{}); } ); // PR libstdc++/118413 #else static_assert( ! requires { transform(x, move_only{}); } ); + static_assert( ! requires { x | transform(move_only{}); } ); #endif }