Por que posso usar static_cast com void *, mas não com char *

Eu sei dissoreinterpret_cast é usado principalmente indo ou vindo dechar*.

Mas fiquei surpreso ao descobrir questatic_cast poderia fazer o mesmo com umvoid*. Por exemplo:

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

O que ganhamos ao usarreinterpret_cast echar* sobrestatic_cast evoid*? Tem algo a ver com o estrito problema de aliasing?

questionAnswers(2)

yourAnswerToTheQuestion