Fix C++17 template placeholder for template template parm.
authorJason Merrill <jason@redhat.com>
Wed, 9 Nov 2016 20:02:56 +0000 (15:02 -0500)
committerJason Merrill <jason@gcc.gnu.org>
Wed, 9 Nov 2016 20:02:56 +0000 (15:02 -0500)
commite922b256906a07da5571ed0258c4ee57a4b1859c
treed5c30a428ac35d79bca820d0fbd2ad2ad9806fef
parent4a826ca6feb3c7ec3ef6287214a3f2820222c97e
Fix C++17 template placeholder for template template parm.

* parser.c (cp_parser_simple_type_specifier): Allow placeholder
for template template parameter.
(cp_parser_type_id_1): Improve diagnostic.
* decl.c (grokdeclarator): Handle class deduction diagnostics here.
* pt.c (splice_late_return_type): Not here.
(tsubst) [TEMPLATE_TYPE_PARM]: Substitute into placeholder template.
(do_class_deduction): Handle non-class templates.

From-SVN: r242018
gcc/cp/ChangeLog
gcc/cp/decl.c
gcc/cp/parser.c
gcc/cp/pt.c
gcc/testsuite/g++.dg/cpp0x/variadic-ex1.C
gcc/testsuite/g++.dg/cpp1z/class-deduction21.C [new file with mode: 0644]
gcc/testsuite/g++.dg/cpp1z/class-deduction22.C [new file with mode: 0644]
gcc/testsuite/g++.dg/cpp1z/class-deduction23.C [new file with mode: 0644]
gcc/testsuite/g++.old-deja/g++.pt/ttp10.C