The C++ standard (quoting from draft n3242) says the following about subobjects [intro.object]:
Unless an object is a bit-field or a base class subobj
In the final version of the C++11 standard, that paragraph was revised to read:
Unless an object is a bit-field or a base class subobject of zero size, the address of that object is the address of the first byte it occupies. 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.
Although I am not sure I understand what this has to do with the sizes of the objects.