In this article the following is mentioned regarding reinterpret_cast of integers and pointers:
(the round-trip conversi
There might not be an integral type that exactly matches the width of the platform's address space. intptr_t has to be big enough to hold any pointer value, meaning it is as big or bigger than a pointer, and when it is bigger, the pigeonhole principle guarantees that it won't be possible for each integer value to have a unique void* value.