struct Empty {}; namespace basic { struct Foo { [[no_unique_address]] Empty a; }; } // namespace basic namespace bases { struct A { long c, d; }; struct B { [[no_unique_address]] Empty x; }; struct C { [[no_unique_address]] Empty x; }; struct Foo : B, A, C {}; struct Bar : B, C, A {}; } // namespace bases int main() { basic::Foo b1; bases::Foo b2; bases::Bar b3; b2.c = 1; b2.d = 2; b3.c = 5; b3.d = 6; return 0; }