]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
c++: Fix lambdas with variadic parameters and static specifier [PR119048]
authorEczbek <eczbek.void@gmail.com>
Sat, 20 Sep 2025 13:25:40 +0000 (09:25 -0400)
committerJason Merrill <jason@redhat.com>
Sat, 20 Sep 2025 14:09:56 +0000 (15:09 +0100)
PR c++/119048

gcc/cp/ChangeLog:

* lambda.cc (compare_lambda_sig): Only skip first parameter for
object members.

gcc/testsuite/ChangeLog:

* g++.dg/cpp23/static-operator-call8.C: New test.

Reviewed-by: Jason Merrill <jason@redhat.com>
gcc/cp/lambda.cc
gcc/testsuite/g++.dg/cpp23/static-operator-call8.C [new file with mode: 0644]

index 711e3b7a18e4b47f431d27677f29de9c7290c3bb..bb0aa7d0a020f174f2f096e9b44c3a1bfc4e6196 100644 (file)
@@ -1742,8 +1742,8 @@ compare_lambda_sig (tree fn_a, tree fn_b)
       || fn_b == error_mark_node)
     return false;
 
-  for (tree args_a = TREE_CHAIN (TYPE_ARG_TYPES (TREE_TYPE (fn_a))),
-        args_b = TREE_CHAIN (TYPE_ARG_TYPES (TREE_TYPE (fn_b)));
+  for (tree args_a = FUNCTION_FIRST_USER_PARMTYPE (fn_a),
+        args_b = FUNCTION_FIRST_USER_PARMTYPE (fn_b);
        args_a || args_b;
        args_a = TREE_CHAIN (args_a), args_b = TREE_CHAIN (args_b))
     {
diff --git a/gcc/testsuite/g++.dg/cpp23/static-operator-call8.C b/gcc/testsuite/g++.dg/cpp23/static-operator-call8.C
new file mode 100644 (file)
index 0000000..46aa6b4
--- /dev/null
@@ -0,0 +1,6 @@
+// PR c++/119048
+// { dg-do compile { target c++23 } }
+
+int main() {
+       [] {}, [](...) static {};
+}