https://gcc.gnu.org/bugzilla/show_bug.cgi?id=118413
--- Comment #6 from GCC Commits <cvs-commit at gcc dot gnu.org> --- The master branch has been updated by Patrick Palka <ppa...@gcc.gnu.org>: https://gcc.gnu.org/g:09d1cbee10b8c51aed48f047f30717f622d6f811 commit r15-7272-g09d1cbee10b8c51aed48f047f30717f622d6f811 Author: Patrick Palka <ppa...@redhat.com> Date: Wed Jan 29 10:02:28 2025 -0500 libstdc++: Fix views::transform(move_only_fn{}) forwarding [PR118413] The range adaptor perfect forwarding simplification mechanism is currently only enabled for trivially copyable bound arguments, to prevent undesirable copies of complex objects. But "trivially copyable" is the wrong property to check for here, since a move-only type with a trivial move constructor is considered trivially copyable, and after P2492R2 we can't assume copy constructibility of the bound arguments. This patch makes the mechanism more specifically check for trivial copy constructibility instead so that it's properly disabled for move-only bound arguments. PR libstdc++/118413 libstdc++-v3/ChangeLog: * include/std/ranges (views::__adaptor::_Partial): Adjust constraints on the "simple" partial specializations to require is_trivially_copy_constructible_v instead of is_trivially_copyable_v. * testsuite/std/ranges/adaptors/adjacent_transform/1.cc (test04): Extend P2494R2 test. * testsuite/std/ranges/adaptors/transform.cc (test09): Likewise. Reviewed-by: Jonathan Wakely <jwak...@redhat.com>