Under some circumstances, the typeid operator throws a bad_typeid exception. The interface for bad_typeid is:
class bad_typeid : public logic {
public:
bad_typeid(const char * what_arg) : logic(what_arg) {}
void raise() { handle_raise(); throw *this; }
// virtual __exString what() const; //inherited
};
See typeid Operator for more information.