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?