使用boost库type_traits.cpp或者C++11 type_traits完成这个功能,注意由于重名不能同时引入
type_traits.cpp主要利用模板元编程进行分发,对于已知正确类型返回true,其他类型返回false,或者干脆调用编译器的接口完成这一功能
如:is_array<T>
先去除顶层CV,再对已知正确的类型分发正确结果(继承正确结果的类,类中有类型定义和结果),其他的类型分发错误的结果
再如:
像is_class这样代码层面完全写不出的东东都扔给编译器接口
is_class_impl实际上调用编译器接口: __is_class(T)