http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51096
--- Comment #1 from Jonathan Wakely <redi at gcc dot gnu.org> 2011-11-11 14:11:53 UTC --- The standard says the empty base and Derived::a must have distinct addresses: "Two objects that are not bit-fields may have the same address if one is a subobject of the other, or if at least one is a base class subobject of zero size and they are of different types; otherwise, they shall have distinct addresses."