Init->getRParenLoc(),
New->getParent());
} else if (Init->isMemberInitializer()) {
- FieldDecl *Member =
- cast<FieldDecl>(FindInstantiatedDecl(Init->getMember()));
+ FieldDecl *Member;
+
+ // Is this an anonymous union?
+ if (FieldDecl *UnionInit = Init->getAnonUnionMember())
+ Member = cast<FieldDecl>(UnionInit);
+ else
+ Member = cast<FieldDecl>(FindInstantiatedDecl(Init->getMember()));
NewInit = BuildMemberInitializer(Member, (Expr **)NewArgs.data(),
NewArgs.size(),
};
B<int> b0;
+
+template <typename T> struct C {
+ union {
+ int a;
+ void* b;
+ };
+
+ C(int a) : a(a) { }
+ C(void* b) : b(b) { }
+};
+
+C<int> c0;