https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90548
Marek Polacek <mpolacek at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW Last reconfirmed| |2019-05-20 CC| |mpolacek at gcc dot gnu.org Target Milestone|--- |9.2 Ever confirmed|0 |1 --- Comment #1 from Marek Polacek <mpolacek at gcc dot gnu.org> --- commit 64e3499e2386103c6842ffdf0b8eeae1d3798d29 Author: jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Wed Jan 30 02:43:04 2019 +0000 PR c++/86943 - wrong code converting lambda to function pointer. In this PR, instantiating the static thunk returned from the generic lambda conversion function template was using normal overload resolution, which meant calling an extra constructor when forwarding its argument. Fixed by special-casing thunk calls significantly more. * lambda.c (maybe_add_lambda_conv_op): Use a template-id in the call. Only forward parms for decltype. * pt.c (tsubst_copy_and_build) [CALL_EXPR]: Handle CALL_FROM_THUNK_P specially. * typeck.c (check_return_expr): Don't mess with a thunk call. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@268377 138bc75d-0d04-0410-961f-82ee72b054a4