FYI, MSVC doesn't do this. I use this same hack in a project where I need access to private/protected members in the current stage, and memory layouts need to match ... You gave me a bit of a heart attack there.
mingw gcc (11.2.0) does have the same 8 vs 12 difference.