MSVC might not alter layout, but public and private member functions have different name mangling:
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.