No.
For instance, on x86-64, a pointer is 64-bit long, but int
is only 32-bit long. Casting a pointer to int and back again makes the upper 32-bit of the pointer value lost.
You may use the intptr_t
type in <cstdint>
if you want an integer type which is guaranteed to be as long as the pointer. You could safely reinterpret_cast from a pointer to an intptr_t
and back.