Можно ли сравнивать результаты двух результатов typeid ()?У cppreference есть следующее примечание об этом операторе:
Нет гарантии, что один и тот же экземпляр std :: type_info будет указан во всех оценках выражения typeid того же типа, хотя std :: type_info:: hash_code этих объектов type_info будет идентичен, как и их std :: type_index.
const std::type_info& ti1 = typeid(A);
const std::type_info& ti2 = typeid(A);
assert(&ti1 == &ti2); // not guaranteed
assert(ti1.hash_code() == ti2.hash_code()); // guaranteed
assert(std::type_index(ti1) == std::type_index(ti2)); // guaranteed
Насколько я понимаю, возвращаемая часть является ссылкой на статическое значение L типа type_info,Здесь говорится, что & ti1 == & ti2 не обязательно будет одинаковым для одних и тех же типов.Вместо этого он говорит использовать хеш-код или класс std :: type_index.Однако не упоминается, если сравнивать типы напрямую:
ti1 == ti2;
гарантированно будет истинным.Я использовал это раньше, означает ли документация, что это гарантировано?