c++: pack in enumerator in lambda [PR100198]
authorJason Merrill <jason@redhat.com>
Thu, 27 Jan 2022 22:46:43 +0000 (17:46 -0500)
committerJason Merrill <jason@redhat.com>
Fri, 28 Jan 2022 03:21:43 +0000 (22:21 -0500)
commit4d2efec9f229c2e2e7cb6c3f06beb4c3e9d244a1
tree96e5220e2ebd90102251f7e3752d3b9326f791a1
parent99f17e996f21d0ed64c36ed1e52977b705143522
c++: pack in enumerator in lambda [PR100198]

The GCC 8 lambda overhaul fixed most uses of lambdas in pack expansions, but
local enums and classes within such lambdas that depend on parameter packs
are still broken.  For now, give a sorry instead of an ICE or incorrect
error.

PR c++/100198
PR c++/100030
PR c++/100282

gcc/cp/ChangeLog:

* parser.cc (cp_parser_enumerator_definition): Sorry on parameter
pack in lambda.
(cp_parser_class_head): And in class attributes.
* pt.cc (check_for_bare_parameter_packs): Sorry instead of error
in lambda.

gcc/testsuite/ChangeLog:

* g++.dg/cpp0x/lambda/lambda-variadic13.C: Accept the sorry
as well as the correct error.
* g++.dg/cpp0x/lambda/lambda-variadic14.C: Likewise.
* g++.dg/cpp0x/lambda/lambda-variadic14a.C: New test.
* g++.dg/cpp0x/lambda/lambda-variadic15.C: New test.
* g++.dg/cpp0x/lambda/lambda-variadic16.C: New test.
gcc/cp/parser.cc
gcc/cp/pt.cc
gcc/testsuite/g++.dg/cpp0x/lambda/lambda-variadic13.C
gcc/testsuite/g++.dg/cpp0x/lambda/lambda-variadic14.C
gcc/testsuite/g++.dg/cpp0x/lambda/lambda-variadic14a.C [new file with mode: 0644]
gcc/testsuite/g++.dg/cpp0x/lambda/lambda-variadic15.C [new file with mode: 0644]
gcc/testsuite/g++.dg/cpp0x/lambda/lambda-variadic16.C [new file with mode: 0644]