Bootstrapped/regtested on x86_64-pc-linux-gnu, ok for trunk/branches? -- >8 -- The r12-8258 fix assumes that DECL_CONTEXT of 'pack' in check_for_bare_parameter_packs is going to be an operator() but as this test shows, it can be empty.
PR c++/119134 gcc/cp/ChangeLog: * pt.cc (check_for_bare_parameter_packs): Check DECL_CONTEXT. gcc/testsuite/ChangeLog: * g++.dg/cpp2a/lambda-uneval24.C: New test. --- gcc/cp/pt.cc | 1 + gcc/testsuite/g++.dg/cpp2a/lambda-uneval24.C | 4 ++++ 2 files changed, 5 insertions(+) create mode 100644 gcc/testsuite/g++.dg/cpp2a/lambda-uneval24.C diff --git a/gcc/cp/pt.cc b/gcc/cp/pt.cc index 2378f892a53..630826069b8 100644 --- a/gcc/cp/pt.cc +++ b/gcc/cp/pt.cc @@ -4375,6 +4375,7 @@ check_for_bare_parameter_packs (tree t, location_t loc /* = UNKNOWN_LOCATION */) tree pack = TREE_VALUE (parameter_packs); if (is_capture_proxy (pack) || (TREE_CODE (pack) == PARM_DECL + && DECL_CONTEXT (pack) && DECL_CONTEXT (DECL_CONTEXT (pack)) == lam)) break; } diff --git a/gcc/testsuite/g++.dg/cpp2a/lambda-uneval24.C b/gcc/testsuite/g++.dg/cpp2a/lambda-uneval24.C new file mode 100644 index 00000000000..a2b45595e47 --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp2a/lambda-uneval24.C @@ -0,0 +1,4 @@ +// PR c++/119134 +// { dg-do compile { target c++20 } } + +void f(auto... args) requires(([args] {}, ..., true)) {} base-commit: b7f5d9114801716924a67ea393f0c30ab793e505 -- 2.48.1