#define offsetof(s,m) ((::size_t)&reinterpret_cast<char const volatile&>((((s*)0)->m)))
I've been looking for this code for several minutes and I still don't understand what the const char volatile reference thing is, it's giving me a headache.
#define offsetof(s,m) ((size_t)&(((s*)0)->m))
This one is pretty clear, does make sense and it works well, why is the other one being used by MSVC compiler.