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.
if (type
&& code != TYPENAME_TYPE
&& code != TEMPLATE_TYPE_PARM
+ && code != TEMPLATE_PARM_INDEX
&& code != IDENTIFIER_NODE
&& code != FUNCTION_TYPE
&& code != METHOD_TYPE)
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;