First of all, this is not a duplicate of Why do we have reinterpret_cast in C++ when two chained static_cast can do it\'s job?.
I know situations where we cannot use
You should not use reinterpret_cast in cases where cross-cast pointers - instead use implicit conversion to void*, then static_cast.
void*
static_cast