When
typeid is applied to a glvalue whose type is a
polymorphic class type (
[class.virtual]), the result refers to a
std::type_info object representing the type of the most derived
object (
[intro.object]) (that is, the dynamic type) to which the
glvalue refers
.