AFAIK, for pointers/references static_cast, if a class definition is not visible to compiler at this point, then static_cast will be behave like reinterpret_cast.
static_cast
reinterpret_cast
Why is static_cast unsafe for pointers/references and is safe for numeric values?