In portable C ++, it's impossible to do what you want.
It may be possible to get a partial answer if you limit yourself to this platform. For example, those platforms that adhere to Itanium ABI will have an implementation of this function:
extern "C"
void* __dynamic_cast(const void *sub,
const abi::__class_type_info *src,
const abi::__class_type_info *dst,
std::ptrdiff_t src2dst_offset);
ABI abi::__class_type_info - , std::type_info, std::type_info , std::type_info (abi::__class_type_info, ).
ABI, , ( ), std::type_info. , std::type_info , dynamic_cast static_cast .
, . , . , . , , , ++ dynamic_cast, , , .