casting via void* instead of using reinterpret_cast
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 For types for which such cast is permitted (e.g. if T1 is a POD