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