]> git.ipfire.org Git - thirdparty/gcc.git/commit
c++: tf_partial and alias_ctad_tweaks [PR122621]
authorPatrick Palka <ppalka@redhat.com>
Tue, 10 Feb 2026 01:32:39 +0000 (20:32 -0500)
committerPatrick Palka <ppalka@redhat.com>
Tue, 10 Feb 2026 01:32:39 +0000 (20:32 -0500)
commitbf2657d9d45e50c4eb82da3f6f8d9d26e288890f
tree5028a43ce43016981440471b9680c512a4dc5851
parentd3af40eefab378ddcb1a66baa72613b91c83885c
c++: tf_partial and alias_ctad_tweaks [PR122621]

Like in r15-6740-g27d620d6769715 for instantiate_template with dependent
arguments, we also need to set tf_partial during the alias_ctad_tweaks
transformation mainly for benefit of properly handling extra-args trees.

In this testcase during alias_ctad_tweaks we substitute the dependent
ElemTs={Tuple<Us...>}, Ts={Ts...} into the requires-clause, which
tsubst_pack_expansion decides to defer via extra-args, and for the
subsequent add_extra_args (during guide overload resolution) to merge
the deferred dependent arguments correctly, tf_partial has to have been
set.

PR c++/122621

gcc/cp/ChangeLog:

* pt.cc (tsubst_pack_expansion): Use tf_partial instead of
tf_none, except when substituting outer (non-dependent) template
arguments.

gcc/testsuite/ChangeLog:

* g++.dg/cpp2a/class-deduction-alias26.C: New test.

Reviewed-by: Jason Merrill <jason@redhat.com>
gcc/cp/pt.cc
gcc/testsuite/g++.dg/cpp2a/class-deduction-alias26.C [new file with mode: 0644]