There are many reasons not to use typeid. Other than for using members of type_info (implementation defined behavior), it is usually (always?) pos
typeid
type_info
When implementing multimethods (or multiple dispatch), where the actual call is chosen from e.g. a map, using std::type_info* as a key.
std::type_info*