From: Jason Merrill Date: Sat, 11 Aug 2018 10:47:03 +0000 (-0400) Subject: PR c++/86728 - C variadic generic lambda. X-Git-Tag: basepoints/gcc-10~4803 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=fc186cbd1cdff6cecdb8eb0a350c3ee0af2d1332;p=thirdparty%2Fgcc.git PR c++/86728 - C variadic generic lambda. * parser.c (cp_parser_parameter_declaration): Don't turn 'auto' into a pack if it's followed by a declarator-id. From-SVN: r263484 --- diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 8a3e15077040..fc0771aa7f2d 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,9 @@ +2018-08-10 Jason Merrill + + PR c++/86728 - C variadic generic lambda. + * parser.c (cp_parser_parameter_declaration): Don't turn 'auto' into + a pack if it's followed by a declarator-id. + 2018-08-08 Jakub Jelinek P0595R1 - is_constant_evaluated diff --git a/gcc/cp/parser.c b/gcc/cp/parser.c index 93c812f80d73..8cfcd150705f 100644 --- a/gcc/cp/parser.c +++ b/gcc/cp/parser.c @@ -21722,7 +21722,8 @@ cp_parser_parameter_declaration (cp_parser *parser, parameter was introduced during cp_parser_parameter_declaration, change any implicit parameters introduced into packs. */ if (parser->implicit_template_parms - && (token->type == CPP_ELLIPSIS + && ((token->type == CPP_ELLIPSIS + && declarator_can_be_parameter_pack (declarator)) || (declarator && declarator->parameter_pack_p))) { int latest_template_parm_idx = TREE_VEC_LENGTH diff --git a/gcc/testsuite/g++.dg/cpp1y/lambda-generic-variadic19.C b/gcc/testsuite/g++.dg/cpp1y/lambda-generic-variadic19.C new file mode 100644 index 000000000000..e78677de0b52 --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp1y/lambda-generic-variadic19.C @@ -0,0 +1,4 @@ +// PR c++/86728 +// { dg-do compile { target c++14 } } + +auto c = [](auto x ...) { };