Отличный и хороший документ ответ от Evg говорит вам, что оба эквивалентны.
Но вы также спросили, есть ли что-то более глубокое, чтобы знать. И да, есть:
- При сравнении двух typeid
name()
вы должны знать, что разные типы могут иметь одинаковое строковое представление. Таким образом, даже если ваше равенство истинно, вы не можете быть уверены, что это действительно одинаковые типы с обеих сторон. - В обратном направлении различные операции
typeid
для выражений одного типа могут возвращать разные ссылки type_info
. Таким образом, сравнивая адрес двух typeid, вы не можете быть уверены, что это два разных типа.
Так что, если вы хотите использовать typeid
для сравнения типов времени выполнения, вы должны go для его hash_code()
(который гарантированно даст то же значение для два одинаковых типа, которые должны давать разные значения для разных типов, согласно ненормативному примечанию в стандарте). Или, что еще лучше, просто сравните сами typeid
с ==
, как предлагает Artyer в комментариях.