I have unironically used `#define private public` before including headers in my test code...
https://eel.is/c++draft/macro.names#2
Otherwise this is one of the unintended effects (on Itanium ABI):
mingw gcc (11.2.0) does have the same 8 vs 12 difference.
https://godbolt.org/z/ddqd3vr5x
Notice the call to `?foo@A@@AEAAXXZ` in one compilation and `?foo@A@@QEAAXXZ` in the other, supposedly to the same function. You might get fun linker errors this way, possibly nothing nastier though.
Luckily I don't need to link anything, so I don't care about that for now.