¿Por qué necesito # incluir <typeinfo> cuando uso el operador typeid?

lostypeid representa un operador C ++ RTTI que también es una palabra clave C ++. Devuelve unstd::type_info objeto que contiene información específica de tipo (dinámico).

Por lo que entendí de varias fuentes, uno DEBE incluir<typeinfo> cuando usastypeidde lo contrario, el programa está mal formado. De hecho, mi compilador gcc5.2 ni siquiera compila el programa si no incluyo el encabezado mencionado anteriormente. No entiendo por qué es obligatorio incluir un encabezado para el uso de un C ++palabra clave. Entiendo que se requiere un encabezado cada vez que usamos algún objeto declarado / definido en ese encabezado, perotypeid no es de un tipo de clase. Entonces, ¿cuál es la razón detrás de esta aplicación de incluir el encabezado<typeinfo>?

Respuestas a la pregunta(2)

Su respuesta a la pregunta