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
Since, the listing of the scenarios can go very long, I am putting in simple words:
If chained static_cast<>s don't give compile-error, you should avoid reinterpret_cast<>.
static_cast<>
reinterpret_cast<>