> The C++ standard implies that for all pointer-to-object types have the > same size and that all pointer-to-function types have the same size. > (Technically, it doesn't say that that; it says that you can convert T* > -> U* -> T* and get the original value.)
Then they don't need to be the same size in most cases since usually when multiple pointer sizes are allowed, the underlying OS/RTL only uses the number of bits corresponding to the narrower size.