PR c++/86986 - ICE with TTP with parameter pack.
authorJason Merrill <jason@redhat.com>
Fri, 5 Apr 2019 02:50:18 +0000 (22:50 -0400)
committerJason Merrill <jason@gcc.gnu.org>
Fri, 5 Apr 2019 02:50:18 +0000 (22:50 -0400)
commit17838af989014f5e90e3a7ab4e519d495c03e726
tree8def1b616fe168adc3282df46025aa35527f612e
parent70604b02254efb0cb9fc3750135227ae9ebd6ec9
PR c++/86986 - ICE with TTP with parameter pack.

Three separate issues were breaking this testcase.  One, we were trying to
look at the type of a template template parameter to see if it's a valid
non-type template parameter.  Two, we were treating a parameter pack named
in the type of a template parameter pack of a TTP pack as being one of the
packs expanded by the outer pack.  Three, we weren't supplying all the
necessary levels of template arguments when TTP matching.

* pt.c (coerce_template_parameter_pack): Only look at the type of a
non-type parameter pack.
(fixed_parameter_pack_p_1): Don't recurse into the type of a
non-type parameter pack.
(coerce_template_template_parms): Call add_outermost_template_args.

From-SVN: r270159
gcc/cp/ChangeLog
gcc/cp/pt.c
gcc/testsuite/g++.dg/cpp0x/variadic-ttp9.C [new file with mode: 0644]