I'm reading a book and I found that reinterpret_cast should not be used directly, but rather casting to void* in combination with static_cast:

T1 * p1=...
void *pv=p1;
T2 * p2= static_cast<T2*>(pv);

Instead of:

T1 * p1=...
T2 * p2= reinterpret_cast<T2*>(p1);

However, I can't find an explanation why is this better than the direct cast. I would very appreciate if someone can give me an explanation or point me to the answer.

Thanks in advance

p.s. I know what is reinterpret_cast used for, but I never saw that is used in this way

Edit
Report