On 3/7/25 11:40 AM, Marek Polacek wrote:
Bootstrapped/regtested on x86_64-pc-linux-gnu, ok for trunk/branches?

OK.

-- >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

Reply via email to