¿Por qué puedo usar static_cast con void * pero no con char *

Yo sé esoreinterpret_cast se usa principalmente yendo hacia o desde unchar*.

Pero me sorprendió descubrir questatic_cast podría hacer lo mismo con unvoid*. Por ejemplo:

auto foo "hello world"s;
auto temp = static_cast<void*>(&foo);
auto bar = static_cast<string*>(temp);

¿Qué ganamos al usarreinterpret_cast ychar* terminadostatic_cast yvoid*? ¿Tiene algo que ver con el estricto problema de alias?

Respuestas a la pregunta(2)

Su respuesta a la pregunta