>>9,15-17,19If you have to use void *, or cast, you have expressly admitted that the type system is insufficient. The implication that relying on totally unchecked runtime type conversions is acceptable for such a basic language feature is just insane, especially given that the language spec permits implementations to do
literally whatever they feel like doing if the programmer attempts to perform an illegal conversion.