<div dir="auto">I propose to allow reinterpret_cast from pointer to integral, as well as the no-op/identity reintepret_cast in constant expressions. This particular version is useful in implementing hashcode algorithms at compile time, and to my knowledge bit_cast does not work for pointer types at compile time.</div><div dir="auto">As an extension to this, I propose to allow static_cast from cv void* if and only if the object pointed to by the argument to the static_cast is pointer-interconvertible with an object of target type (with the exception of identity static_cast to cv void*, which should always be valid). This would naturally extend to allowing reintepret_cast between object pointer types if and only if the static_cast from cv void* to the destination type would be valid by these rules. The static_cast would result in a pointer to the object of the destination type which is pointer-interconvertible with the original pointer.</div><div dir="auto"><br></div><div dir="auto">The results would be valid integral and pointer constant expressions respectively, dereferencing the pointer would result in an lvalue constant expression and can undergo lvalue-to-rvalue conversion in a core constant expression if an lvalue of pointer-interconvertible object could undergo lvalue-to-rvalue conversion in a core constant expression.</div>

