std::bad_typeid

From Get docs
Cpp/docs/latest/types/bad typeid


std::bad_typeid

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.

[[../File:data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+CjwhLS0gR2VuZXJhdGVkIGJ5IGdyYXBodml6IHZlcnNpb24gMi4yNi4zICgyMDEwMDEyNi4xNjAwKQogLS0+CjwhLS0gVGl0bGU6IGluaGVyaXRhbmNlIFBhZ2VzOiAxIC0tPgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHdpZHRoPSIyNDNweCIgaGVpZ2h0PSI0MHB4IiB2aWV3Qm94PSIwLjAwIDAuMDAgMjY5LjAwIDQ0LjAwIj4KPGcgaWQ9ImdyYXBoMSIgY2xhc3M9ImdyYXBoIiB0cmFuc2Zvcm09InJvdGF0ZSgwKSB0cmFuc2xhdGUoNCA0MCkiPgo8dGl0bGU+aW5oZXJpdGFuY2U8L3RpdGxlPgo8IS0tIGUxIC0tPgo8ZyBpZD0ibm9kZTEiIGNsYXNzPSJub2RlIj48dGl0bGU+ZTE8L3RpdGxlPgo8YT4KPHBvbHlnb24gZmlsbD0id2hpdGUiIHN0cm9rZT0iYmxhY2siIHBvaW50cz0iMTE1LC0zNiAxLC0zNiAxLC0xLjc3NjM2ZS0xNCAxMTUsLTMuNTUyNzFlLTE1IDExNSwtMzYiLz4KPHRleHQgdGV4dC1hbmNob3I9Im1pZGRsZSIgeD0iNTgiIHk9Ii0xNC40IiBmb250LWZhbWlseT0iRGVqYVZ1IFNhbnMsIHZlcmRhbmEsIHNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iMTQuMDAiPmV4Y2VwdGlvbjwvdGV4dD4KPC9hPgo8L2c+CjwhLS0gZTIgLS0+CjxnIGlkPSJub2RlMiIgY2xhc3M9Im5vZGUiPjx0aXRsZT5lMjwvdGl0bGU+CjxhPgo8cG9seWdvbiBmaWxsPSJsaWdodGdyZXkiIHN0cm9rZT0iYmxhY2siIHBvaW50cz0iMjYwLC0zNiAxNDYsLTM2IDE0NiwtMS43NzYzNmUtMTQgMjYwLC0zLjU1MjcxZS0xNSAyNjAsLTM2Ii8+Cjx0ZXh0IHRleHQtYW5jaG9yPSJtaWRkbGUiIHg9IjIwMyIgeT0iLTE0LjQiIGZvbnQtZmFtaWx5PSJEZWphVnUgU2FucywgdmVyZGFuYSwgc2Fucy1zZXJpZiIgZm9udC1zaXplPSIxNC4wMCI+YmFkX3R5cGVpZDwvdGV4dD4KPC9hPgo8L2c+CjwhLS0gZTImIzQ1OyZndDtlMSAtLT4KPGcgaWQ9ImVkZ2UyIiBjbGFzcz0iZWRnZSI+PHRpdGxlPmUyLSZndDtlMTwvdGl0bGU+CjxwYXRoIGZpbGw9Im5vbmUiIHN0cm9rZT0iYmxhY2siIGQ9Ik0xNDUuMjc2LC0xOEMxNDAuNTMyLC0xOCAxMzUuNywtMTggMTMwLjg2NywtMTgiLz4KPHBvbHlnb24gZmlsbD0ibm9uZSIgc3Ryb2tlPSJibGFjayIgcG9pbnRzPSIxMzAuNTI2LC0xMi43NTAxIDExNS41MjYsLTE4IDEzMC41MjYsLTIzLjI1MDEgMTMwLjUyNiwtMTIuNzUwMSIvPgo8L2c+CjwvZz4KPC9zdmc+Cg==|243x40px|std-bad typeid-inheritance.svg]]

Inheritance diagram.


Member functions

constructs a new bad_typeid object

(public member function)

Inherited from std::exception

Member functions

[virtual]

destroys the exception object

(virtual public member function of std::exception)

[virtual]

returns an explanatory string

(virtual public member function of std::exception)


Example

#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';
    }
}

Output:

Attempted a typeid of NULL pointer!

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
http://en.cppreference.com/w/cpp/types/bad_typeid