//类型萃取#pragma once#include
using namespace std;struct __TrueType//定义类 普通类型(基本类型的){ bool Get() { return true; }};struct __FalseType//定义类 非基本类型{ bool Get() { return false; }};template 
//模板类 (类型萃取)struct TypeTraits //非基本类型{ typedef __FalseType   __IsPODType;}; //将基本类型类 与非基本类型类 重命名(typedef)为相同名 //调用__IsPODType.Get() 时编译器会根据TypeTraits
 T 的实际类型调用  //__FalseType  或 Truetype 的 Get()函数  得到不同 bool值
struct TypeTraits< bool>			  //	以下为常用基本类型特化{	typedef __TrueType     __IsPODType;};template <>struct TypeTraits< char>{	typedef __TrueType     __IsPODType;};template <>struct TypeTraits< unsigned char >{	typedef __TrueType     __IsPODType;};template <>struct TypeTraits< short>{	typedef __TrueType     __IsPODType;};template <>struct TypeTraits< unsigned short >{	typedef __TrueType     __IsPODType;};template <>struct TypeTraits< int>{	typedef __TrueType     __IsPODType;};template <>struct TypeTraits< unsigned int >{	typedef __TrueType     __IsPODType;};template <>struct TypeTraits< long>{	typedef __TrueType     __IsPODType;};template <>struct TypeTraits< unsigned long >{	typedef __TrueType     __IsPODType;};template <>struct TypeTraits< long long >{	typedef __TrueType     __IsPODType;};template <>struct TypeTraits< unsigned long long>{	typedef __TrueType     __IsPODType;};template <>struct TypeTraits< float>{	typedef __TrueType     __IsPODType;};template <>struct TypeTraits< double>{	typedef __TrueType     __IsPODType;};template <>struct TypeTraits< long double >{	typedef __TrueType     __IsPODType;};template 
struct TypeTraits< _Tp*>{ typedef __TrueType     __IsPODType;};