57 type_index(
const type_info& __rhs) noexcept
58 : _M_target(&__rhs) { }
61 operator==(
const type_index& __rhs)
const noexcept
62 {
return *_M_target == *__rhs._M_target; }
64#if ! __cpp_lib_three_way_comparison
66 operator!=(
const type_index& __rhs)
const noexcept
67 {
return *_M_target != *__rhs._M_target; }
71 operator<(
const type_index& __rhs)
const noexcept
72 {
return _M_target->before(*__rhs._M_target); }
75 operator<=(
const type_index& __rhs)
const noexcept
76 {
return !__rhs._M_target->
before(*_M_target); }
79 operator>(
const type_index& __rhs)
const noexcept
80 {
return __rhs._M_target->
before(*_M_target); }
83 operator>=(
const type_index& __rhs)
const noexcept
84 {
return !_M_target->before(*__rhs._M_target); }
86#if __cpp_lib_three_way_comparison
88 operator<=>(
const type_index& __rhs)
const noexcept
90 if (*_M_target == *__rhs._M_target)
91 return strong_ordering::equal;
92 if (_M_target->before(*__rhs._M_target))
93 return strong_ordering::less;
94 return strong_ordering::greater;
99 hash_code()
const noexcept
100 {
return _M_target->hash_code(); }
103 name()
const noexcept
104 {
return _M_target->name(); }