Какие платформы не используют сравнение строк в type_info op ==?

Вот типичная реализация type_info::operator==:

#if _PLATFORM_SUPPORTS_UNIQUE_TYPEINFO
    bool operator==(const type_info& __rhs) const {
      return __mangled_name == __rhs.__mangled_name;
    }
#else
    bool operator==(const type_info& __rhs) const {
      return __mangled_name == __rhs.__mangled_name ||
             strcmp(__mangled_name, __rhs.__mangled_name) == 0;
    }
#endif

В libstdc++ он управляется с помощью __GXX_MERGED_TYPEINFO_NAMES,
в libc++ это _LIBCPP_NONUNIQUE_RTTI_BIT,
MSVC всегда сравнивает строки.

Каковы платформы, которые не сравнивают строки?

Ответы

Ответ 1

Grep в каталоге gcc/config возвращает следующие платформы:

  • Symbian
  • i386/cygming (также __GXX_TYPEINFO_EQUALITY_INLINE=0)
  • m68k/uclinux