Defined in header <typeinfo>
class bad_typeid : public std::exception;

An exception of this type is thrown when a typeid operator is applied to a dereferenced null pointer value of a polymorphic type.

cpp/error/exceptionstd-bad typeid-inheritance.svg

Inheritance diagram.

Member functions

constructs a new bad_typeid object
(public member function)

Inherited from std::exception

Member functions

destroys the exception object
(virtual public member function of std::exception)
returns an explanatory string
(virtual public member function of std::exception)


#include <iostream>
#include <typeinfo>
struct S { // The type has to be polymorphic
    virtual void f();
int main()
    S* p = nullptr;
    try {
        std::cout << typeid(*p).name() << '\n';
    } catch(const std::bad_typeid& e) {
        std::cout << e.what() << '\n';


Attempted a typeid of NULL pointer!

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.