Commit 55b11c60 by Jason Merrill Committed by Jason Merrill

PR c++/80096 - ICE with C++17 non-type auto.

	* pt.c (tsubst): Delay tsubst of type of template non-type
	parameter.

From-SVN: r246292
parent 18f73c5f
2017-03-20 Jason Merrill <jason@redhat.com>
PR c++/80096 - ICE with C++17 non-type auto.
* pt.c (tsubst): Delay tsubst of type of template non-type
parameter.
PR c++/79519 - ICE with deleted template friend.
* decl.c (grokdeclarator): Complain about misplaced function
definition using =, as well.
......
......@@ -13388,6 +13388,7 @@ tsubst (tree t, tree args, tsubst_flags_t complain, tree in_decl)
if (type
&& code != TYPENAME_TYPE
&& code != TEMPLATE_TYPE_PARM
&& code != TEMPLATE_PARM_INDEX
&& code != IDENTIFIER_NODE
&& code != FUNCTION_TYPE
&& code != METHOD_TYPE)
......@@ -13690,6 +13691,10 @@ tsubst (tree t, tree args, tsubst_flags_t complain, tree in_decl)
break;
case TEMPLATE_PARM_INDEX:
/* OK, now substitute the type of the non-type parameter. We
couldn't do it earlier because it might be an auto parameter,
and we wouldn't need to if we had an argument. */
type = tsubst (type, args, complain, in_decl);
r = reduce_template_parm_level (t, type, levels, args, complain);
break;
......
// PR c++/80096
// { dg-options -std=c++1z }
template<auto> struct A
{
template<int> struct B {};
};
A<0> a;
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment