]> git.ipfire.org Git - thirdparty/gcc.git/commit
c++: find A pack from B in <typename...A,Class<A>...B> [PR118265]
authorA J Ryan Solutions Ltd <gcc.gnu.org@ajryansolutions.co.uk>
Sun, 2 Feb 2025 22:26:32 +0000 (22:26 +0000)
committerJason Merrill <jason@redhat.com>
Mon, 3 Feb 2025 23:49:35 +0000 (18:49 -0500)
commit26d3424ca5d9f47d7e0b6fcaf0fae48435a73442
tree7606171a8ad456781aaa3c92b57bb179ae58fe22
parent4c743798b1d4530b327dad7c606c610f3811fdbf
c++: find A pack from B in <typename...A,Class<A>...B> [PR118265]

For non-type parameter packs when unifying the arguments in
unify_pack_expansion it iterates over the associated packs of a param so
that when it recursively unifies the param with the arguments it knows
which targs have been populated with parameter pack arguments that it can
then collect up. This change adds a tree walk so that in the example above
it reaches ...A and adds it to the associated packs for ...B and therefore
knows it will have been set in targs in unify_pack_expansion and processes
it as per other pack arguments.

PR c++/118265

gcc/cp/ChangeLog:

* pt.cc (find_parameter_packs_r) <case TEMPLATE_PARM_INDEX>:
Walk into the type of a parameter pack.

Signed-off-by: Adam J Ryan <gcc.gnu.org@ajryansolutions.co.uk>
gcc/cp/pt.cc
gcc/testsuite/g++.dg/cpp1z/variadic-nontype1.C [new file with mode: 0644]