代码太长了,分两个框
struct __type_info_node;
extern __type_info_node __type_info_root_node;
_CRT_BEGIN_C_HEADER
struct __std_type_info_data
{
const char * _UndecoratedName;
const char _DecoratedName[1];
__std_type_info_data() = delete;
__std_type_info_data(const __std_type_info_data&) = delete;
__std_type_info_data(__std_type_info_data&&) = delete;
__std_type_info_data& operator=(const __std_type_info_data&) = delete;
__std_type_info_data& operator=(__std_type_info_data&&) = delete;
};
_VCRTIMP int __cdecl __std_type_info_compare( _In_ const __std_type_info_data* _Lhs, _In_ const __std_type_info_data* _Rhs );
_VCRTIMP size_t __cdecl __std_type_info_hash( _In_ const __std_type_info_data* _Data );
_VCRTIMP const char* __cdecl __std_type_info_name( _Inout_ __std_type_info_data* _Data, _Inout_ __type_info_node* _RootNode );
_CRT_END_C_HEADER
第二个框:
class type_info
{
private: mutable __std_type_info_data _Data;
public:
type_info(const type_info&) = delete;
type_info& operator=(const type_info&) = delete;
size_t hash_code() const { return __std_type_info_hash(&_Data); }
bool operator==(const type_info& _Other) const noexcept
{ return __std_type_info_compare(&_Data, &_Other._Data) == 0; }
bool before(const type_info& _Other) const noexcept
{ return __std_type_info_compare(&_Data, &_Other._Data) < 0; }
const char* name() const noexcept
{ return __std_type_info_name(&_Data, &__type_info_root_node); }
const char* raw_name() const noexcept
{ return _Data._DecoratedName; }
virtual ~type_info() noexcept;
};