[Bug c++/87322] [8/9 Regression] GCC fails to parse captured lambda of 2nd inner lambda if the captured lambda has "," (having 2 arguments)
jakub at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Fri Sep 21 18:13:00 GMT 2018
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87322
Jakub Jelinek <jakub at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |jakub at gcc dot gnu.org
--- Comment #3 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
This is because we have:
13425 /* If cp_unevaluated_operand is set, we're just looking for a
13426 single dummy parameter, so don't keep going. */
13427 if (DECL_CHAIN (t) && !cp_unevaluated_operand)
13428 DECL_CHAIN (r) = tsubst (DECL_CHAIN (t), args,
13429 complain, DECL_CHAIN (t));
and if cp_unevaluated_operand is true, we don't actually tsubst anything but
the first argument.
cp_unevaluated_operand is set in this case in:
++cp_unevaluated_operand;
++c_inhibit_evaluation_warnings;
type = tsubst_copy_and_build (DECLTYPE_TYPE_EXPR (t), args,
complain|tf_decltype, in_decl,
/*function_p*/false,
/*integral_constant_expression*/false);
...
--cp_unevaluated_operand;
--c_inhibit_evaluation_warnings;
The line 13427 stuff has been added for PR53498, I bet we don't want that in
this case though.
More information about the Gcc-bugs
mailing list