https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117002
--- Comment #5 from Iain Buclaw <ibuclaw at gcc dot gnu.org> --- (In reply to Iain Buclaw from comment #4) > I'm going to call this a bug in the D front-end. > > https://godbolt.org/z/EYvcfE4aK > > extern(C++) class Foo { > ubyte[4] not_multiple_of_8; > } > > static assert(__traits(classInstanceAlignment, Foo) == 8); > static assert(__traits(classInstanceSize, Foo) == 16); > > The classInstanceSize returns 12. And for D classes (which have both a __vptr and __monitor field), the instance size is 20, instead of 24.