32 #pragma GCC system_header
35 #if __cplusplus >= 201103L
39 #pragma GCC visibility push(default)
45 class __class_type_info;
66 #ifndef __GXX_MERGED_TYPEINFO_NAMES
68 #define __GXX_MERGED_TYPEINFO_NAMES 0
72 #ifndef __GXX_TYPEINFO_EQUALITY_INLINE
74 #define __GXX_TYPEINFO_EQUALITY_INLINE 0
76 #define __GXX_TYPEINFO_EQUALITY_INLINE 1
99 const char*
name() const _GLIBCXX_NOEXCEPT
100 {
return __name[0] ==
'*' ? __name + 1 : __name; }
102 #if !__GXX_TYPEINFO_EQUALITY_INLINE
106 bool before(
const type_info& __arg)
const _GLIBCXX_NOEXCEPT;
107 bool operator==(
const type_info& __arg)
const _GLIBCXX_NOEXCEPT;
109 #if !__GXX_MERGED_TYPEINFO_NAMES
115 bool before(
const type_info& __arg)
const _GLIBCXX_NOEXCEPT
116 {
return (__name[0] ==
'*' && __arg.__name[0] ==
'*')
117 ? __name < __arg.__name
118 : __builtin_strcmp (__name, __arg.__name) < 0; }
120 bool operator==(
const type_info& __arg)
const _GLIBCXX_NOEXCEPT
122 return ((__name == __arg.__name)
123 || (__name[0] !=
'*' &&
124 __builtin_strcmp (__name, __arg.__name) == 0));
129 bool before(
const type_info& __arg)
const _GLIBCXX_NOEXCEPT
130 {
return __name < __arg.__name; }
132 bool operator==(
const type_info& __arg)
const _GLIBCXX_NOEXCEPT
133 {
return __name == __arg.__name; }
136 bool operator!=(
const type_info& __arg)
const _GLIBCXX_NOEXCEPT
137 {
return !operator==(__arg); }
139 #if __cplusplus >= 201103L
140 size_t hash_code() const noexcept
142 # if !__GXX_MERGED_TYPEINFO_NAMES
143 return _Hash_bytes(
name(), __builtin_strlen(
name()),
144 static_cast<size_t>(0xc70f6907UL));
146 return reinterpret_cast<size_t>(__name);
152 virtual bool __is_pointer_p()
const;
155 virtual bool __is_function_p()
const;
163 virtual bool __do_catch(
const type_info *__thr_type,
void **__thr_obj,
164 unsigned __outer)
const;
167 virtual bool __do_upcast(
const __cxxabiv1::__class_type_info *__target,
168 void **__obj_ptr)
const;
173 explicit type_info(
const char *__n): __name(__n) { }
177 type_info& operator=(
const type_info&);
178 type_info(
const type_info&);
190 bad_cast() _GLIBCXX_USE_NOEXCEPT { }
194 virtual ~
bad_cast() _GLIBCXX_USE_NOEXCEPT;
197 virtual const char*
what()
const _GLIBCXX_USE_NOEXCEPT;
214 virtual const char*
what()
const _GLIBCXX_USE_NOEXCEPT;
220 #pragma GCC visibility pop
virtual const char * what() const noexcept
Thrown when a NULL pointer in a typeid expression is used.
Base class for all library exceptions.
virtual const char * what() const noexcept
Thrown during incorrect typecasting.If you attempt an invalid dynamic_cast expression, an instance of this class (or something derived from this class) is thrown.
const char * name() const noexcept