Consider these types:
struct A {}; struct B : A { int i; };
sizeof(A) > 0 as required by the standard.
sizeof(A) > 0
si
Well, it's not a complete answer, but the GCC Manual mentions that g++ can sometimes place empty base classes at the wrong offset. See the bit about the -Wabi option.
-Wabi