Comments
Patch
commit e1df1acb3674c52ee582ba8a5f756066e23e5016
Author: Jason Merrill <jason@redhat.com>
Date: Tue Sep 11 22:05:10 2012 -0400
PR c++/54511
* pt.c (tsubst_decl) [VAR_DECL]: Handle DECL_ANON_UNION_VAR_P.
@@ -10443,6 +10443,16 @@ tsubst_decl (tree t, tree args, tsubst_flags_t complain)
break;
}
+ if (TREE_CODE (t) == VAR_DECL && DECL_ANON_UNION_VAR_P (t))
+ {
+ /* Just use name lookup to find a member alias for an anonymous
+ union, but then add it to the hash table. */
+ r = lookup_name (DECL_NAME (t));
+ gcc_assert (DECL_ANON_UNION_VAR_P (r));
+ register_local_specialization (r, t);
+ break;
+ }
+
/* Create a new node for the specialization we need. */
r = copy_decl (t);
if (type == NULL_TREE)
new file mode 100644
@@ -0,0 +1,6 @@
+template <int i>
+struct S
+{
+ S () { union { int a; }; a = 0; }
+};
+S<0> s;