http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54740
--- Comment #2 from Jonathan Wakely <redi at gcc dot gnu.org> 2012-09-29 00:01:31 UTC --- (In reply to comment #1) > No they shouldn't. The standard requires this to pass: > > outer o; > assert( static_cast<inner*>(&o) != &o.i_ ); Oops, that should be: assert( static_cast<empty_base*>(&o) != &o.i_ );