📄 typeindex
字号:
// typeindex standard header
#pragma once
#ifndef _TYPEINDEX_
#define _TYPEINDEX_
#ifndef RC_INVOKED
#include <typeinfo>
#pragma pack(push,_CRT_PACKING)
#pragma warning(push,3)
#if _HAS_CPP0X
_STD_BEGIN
class type_index
{ // wraps a typeinfo for indexing
public:
type_index(const type_info &_Tinfo)
: _Tptr(&_Tinfo)
{ // construct from type_info
}
size_t hash_code() const
{ // return hash value
return (_Tptr->hash_code());
}
const char *name() const
{ // return name
return (_Tptr->name());
}
bool operator==(const type_index& _Right) const
{ // test if *this == _Right
return (*_Tptr == *_Right._Tptr);
}
bool operator!=(const type_index& _Right) const
{ // test if *this != _Right
return (!(*this == _Right));
}
bool operator<(const type_index& _Right) const
{ // test if *this < _Right
return (_Tptr->before(*_Right._Tptr) != 0);
}
bool operator>=(const type_index& _Right) const
{ // test if *this >= _Right
return (!(*this < _Right));
}
bool operator>(const type_index& _Right) const
{ // test if *this > _Right
return (_Right < *this);
}
bool operator<=(const type_index& _Right) const
{ // test if *this <= _Right
return (!(_Right < *this));
}
private:
const type_info *_Tptr;
};
template<class _Kty>
class hash;
template<>
class hash<type_index>
: public unary_function<type_index, size_t>
{ // hash functor
public:
typedef type_index _Kty;
size_t operator()(_Kty _Keyval) const
{ // hash _Keyval to size_t value by pseudorandomizing transform
return (_Keyval.hash_code());
}
};
_STD_END
#endif /* _HAS_CPP0X */
#pragma warning(pop)
#pragma pack(pop)
#endif /* RC_INVOKED */
#endif /* _TYPE_INDEX_ */
/*
* Copyright (c) 1992-2009 by P.J. Plauger. ALL RIGHTS RESERVED.
* Consult your license regarding permissions and restrictions.
V5.20:0009 */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -