From: Eczbek Date: Sat, 20 Sep 2025 13:25:40 +0000 (-0400) Subject: c++: Fix lambdas with variadic parameters and static specifier [PR119048] X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=fa71e855ab78945af9da923408bac396213e2475;p=thirdparty%2Fgcc.git c++: Fix lambdas with variadic parameters and static specifier [PR119048] 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 --- diff --git a/gcc/cp/lambda.cc b/gcc/cp/lambda.cc index 711e3b7a18e..bb0aa7d0a02 100644 --- a/gcc/cp/lambda.cc +++ b/gcc/cp/lambda.cc @@ -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 index 00000000000..46aa6b42ce8 --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp23/static-operator-call8.C @@ -0,0 +1,6 @@ +// PR c++/119048 +// { dg-do compile { target c++23 } } + +int main() { + [] {}, [](...) static {}; +}