http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54740
Jonathan Wakely <redi at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |RESOLVED Resolution| |INVALID Severity|major |normal --- Comment #1 from Jonathan Wakely <redi at gcc dot gnu.org> 2012-09-28 23:58:34 UTC --- (In reply to comment #0) > If you change outer to derive from another_empty_base, it returns 1 (which is > correct). Whatever the correct result should be, they at least should be the > same. No they shouldn't. The standard requires this to pass: outer o; assert( static_cast<inner*>(&o) != &o.i_ ); [intro.object]/6 requires two separate objects of the same type to have distinct addresses.