casting a través de void * en lugar de usar reinterpret_cast

Estoy leyendo un libro y encontré quereinterpret_cast no se debe utilizar directamente, sino que se debe anular * en combinación constatic_cast:

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

En lugar de:

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

Sin embargo, no puedo encontrar una explicación de por qué esto es mejor que el reparto directo. Apreciaría mucho si alguien me puede dar una explicación o señalarme la respuesta.

Gracias por adelantado

PD. Yo se lo que esreinterpret_cast Usado para, pero nunca vi que se usa de esta manera.

Respuestas a la pregunta(3)

Su respuesta a la pregunta