c++: CTAD for class tmpl defined inside partial spec [PR104294]
authorPatrick Palka <ppalka@redhat.com>
Mon, 31 Jan 2022 20:27:58 +0000 (15:27 -0500)
committerPatrick Palka <ppalka@redhat.com>
Mon, 31 Jan 2022 20:27:58 +0000 (15:27 -0500)
commit76dc465aaf1b74bf92143510b6db5671e1c053d6
tree765baee05b57613c7113197944dd3f6661ce9253
parent0eb06ee9a40a09d2f492461289d69aa39f757e66
c++: CTAD for class tmpl defined inside partial spec [PR104294]

Here during deduction guide generation for the nested class template
B<char(int)>::C, the computation of outer_args yields the template
arguments relative to the primary template for B (i.e. {char(int)})
but what we really want is those relative to C's enclosing scope, the
partial specialization of B (i.e. {char, int}).

PR c++/104294

gcc/cp/ChangeLog:

* pt.cc (ctor_deduction_guides_for): Correct computation of
outer_args.

gcc/testsuite/ChangeLog:

* g++.dg/cpp1z/class-deduction106.C: New test.
gcc/cp/pt.cc
gcc/testsuite/g++.dg/cpp1z/class-deduction106.C [new file with mode: 0644]