From 7e61b3d4fd0ec658697ece8dac2d27000d6da921 Mon Sep 17 00:00:00 2001 From: Jason Merrill Date: Wed, 28 Jun 2017 15:59:44 -0400 Subject: [PATCH] PR c++/61022 - error with variadic template template parm * pt.c (convert_template_argument): Keep the TYPE_PACK_EXPANSION. From-SVN: r249756 --- gcc/cp/ChangeLog | 3 +++ gcc/cp/pt.c | 2 +- gcc/testsuite/g++.dg/cpp0x/variadic-ttp8.C | 27 ++++++++++++++++++++++ 3 files changed, 31 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/g++.dg/cpp0x/variadic-ttp8.C diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index ae6de7f009c..9c21f6f363e 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,5 +1,8 @@ 2017-06-28 Jason Merrill + PR c++/61022 - error with variadic template template parm + * pt.c (convert_template_argument): Keep the TYPE_PACK_EXPANSION. + PR c++/72801 - ICE with variadic partial specialization * pt.c (unify_pack_expansion): Use PACK_EXPANSION_EXTRA_ARGS. diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c index b86b346164d..fa75037aa3d 100644 --- a/gcc/cp/pt.c +++ b/gcc/cp/pt.c @@ -7695,7 +7695,7 @@ convert_template_argument (tree parm, if (TREE_CODE (TREE_TYPE (arg)) == UNBOUND_CLASS_TEMPLATE) /* The number of argument required is not known yet. Just accept it for now. */ - val = TREE_TYPE (arg); + val = orig_arg; else { tree parmparm = DECL_INNERMOST_TEMPLATE_PARMS (parm); diff --git a/gcc/testsuite/g++.dg/cpp0x/variadic-ttp8.C b/gcc/testsuite/g++.dg/cpp0x/variadic-ttp8.C new file mode 100644 index 00000000000..f3e576ae988 --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp0x/variadic-ttp8.C @@ -0,0 +1,27 @@ +// PR c++/69111 +// { dg-do compile { target c++11 } } + +template