My patch for PR 86932 broke this testcase by passing tf_partial to
coerce_template_template_parms, which prevented do_auto_deduction from
actually replacing the auto.
* pt.c (do_auto_deduction): Clear tf_partial.
From-SVN: r270160
2019-04-04 Jason Merrill <jason@redhat.com>
+ PR c++/89966 - error with non-type auto tparm.
+ * pt.c (do_auto_deduction): Clear tf_partial.
+
+2019-04-04 Jason Merrill <jason@redhat.com>
+
PR c++/86986 - ICE with TTP with parameter pack.
* pt.c (coerce_template_parameter_pack): Only look at the type of a
non-type parameter pack.
if (init && undeduced_auto_decl (init))
return type;
+ /* We may be doing a partial substitution, but we still want to replace
+ auto_node. */
+ complain &= ~tf_partial;
+
if (tree tmpl = CLASS_PLACEHOLDER_TEMPLATE (auto_node))
/* C++17 class template argument deduction. */
return do_class_deduction (type, tmpl, init, flags, complain);
--- /dev/null
+// PR c++/89966
+// { dg-do compile { target c++17 } }
+
+template < auto a0 >
+void f0() { }
+void f0_call() { f0< sizeof(int) >(); }