Ответ 1
Grep в каталоге gcc/config
возвращает следующие платформы:
- Symbian
- i386/cygming (также
__GXX_TYPEINFO_EQUALITY_INLINE=0
) - m68k/uclinux
Вот типичная реализация 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 всегда сравнивает строки.
Каковы платформы, которые не сравнивают строки?
Grep в каталоге gcc/config
возвращает следующие платформы:
__GXX_TYPEINFO_EQUALITY_INLINE=0
)