PR c++/55003
* decl.c (cp_finish_decl): Force instantiation of an
auto static data member.
From-SVN: r196069
2013-02-14 Jason Merrill <jason@redhat.com>
+ PR c++/55003
+ * decl.c (cp_finish_decl): Force instantiation of an
+ auto static data member.
+
PR c++/55220
* pt.c (unify): A pack expansion that is not the last template
argument makes the entire template argument list non-deduced.
tree d_init;
if (init == NULL_TREE)
{
+ if (DECL_TEMPLATE_INSTANTIATION (decl)
+ && !DECL_TEMPLATE_INSTANTIATED (decl))
+ {
+ /* init is null because we're deferring instantiating the
+ initializer until we need it. Well, we need it now. */
+ instantiate_decl (decl, /*defer_ok*/true, /*expl*/false);
+ return;
+ }
+
error ("declaration of %q#D has no initializer", decl);
TREE_TYPE (decl) = error_mark_node;
return;
--- /dev/null
+// PR c++/55003
+// { dg-do compile { target c++11 } }
+
+template<typename T>
+struct A {
+ static const auto t
+ = (typename T::type)42;
+};
+
+struct X {
+ typedef int type;
+};
+
+A<X> a;