[Bug libstdc++/100940] views::take and views::drop should not define _S_has_simple_extra_args
rs2740 at gmail dot com
gcc-bugzilla@gcc.gnu.org
Tue Jun 8 12:53:29 GMT 2021
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100940
TC <rs2740 at gmail dot com> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |rs2740 at gmail dot com
--- Comment #4 from TC <rs2740 at gmail dot com> ---
(In reply to Patrick Palka from comment #3)
> Good point, confirmed. Though I'm not sure if perfect forwarding here is
> strictly necessary to fix this testcase. Perhaps the
> _S_has_simple_extra_args versions of _Partial should be forwarding the bound
> arguments as prvalues instead of as const lvalues?
It's pretty easy to come up with counterexamples that don't work (for example,
the type might be move-only).
It may be better to limit the "simple" case for take/drop to when the argument
type is integer-like; that's like 99% of uses anyway. Contrived examples gets
the perfect forwarding fun but that's fine.
Similarly, it might be a good idea to restrict the "simple" case for the other
adaptors a bit - perhaps to the case where the predicate is trivially copyable,
which should still give good diagnostic for a lot of uses, but avoids a
performance hit if the function object at issue is like...std::function.
More information about the Gcc-bugs
mailing list