Runtime type identification (RTTI) lets you find the dynamic type of an object when
you have only a pointer or a reference to the base type. RTTI is the official way
in standard C++ to discover the type of an object and to convert the type of a pointer
or reference (that is, dynamic typing). The need came from practical experience
with C++. RTTI replaces many homegrown versions with a solid, consistent approach.