PR c++/61022 - error with variadic template template parm

* pt.c (convert_template_argument): Keep the TYPE_PACK_EXPANSION.

From-SVN: r249763
This commit is contained in:
Jason Merrill 2017-06-28 17:08:58 -04:00 committed by Jason Merrill
parent ae2daf1922
commit 35813cb651
3 changed files with 31 additions and 1 deletions

View File

@ -1,5 +1,8 @@
2017-06-28 Jason Merrill <jason@redhat.com>
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.

View File

@ -7634,7 +7634,7 @@ convert_template_argument (tree parm,
else 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);

View File

@ -0,0 +1,27 @@
// PR c++/69111
// { dg-do compile { target c++11 } }
template <template <typename> class ...>
struct template_list {};
template <typename T>
struct A
{};
template <typename>
struct B
{
template <typename T>
using type = A<T>;
};
template <typename ... Types>
struct C
{
using type = template_list<B<Types>::template type...>;
};
int main()
{
return 0;
}