这是SGI STL私房菜类型萃取,我外加上2个类型:move语意的拷贝构造函数和move语意的==操作符,这里偷懒只写了对int类型的特化。
#ifndef type_traits_H_
#define type_traits_H_
namespace SGISTL
{
//true and false class
struct true_type
{
};
struct false_type
{
};
template<typename T>
struct type_traits
{
typedef true_type Dummy_Member;
typedef false_type has_trivial_default_constructor;
typedef false_type has_trivial_copy_constructor;
typedef false_type has_trivial_assigment_operator;
typedef false_type has_trivial_destructor;
typedef false_type is_POD_type;
typedef false_type has_move_constructor;
typedef false_type has_move_assigment_operator;
};
template<>
struct type_traits<int>
{
typedef true_type Dummy_Member;
typedef true_type has_trivial_default_constructor;
typedef true_type has_trivial_copy_constructor;
typedef true_type has_trivial_assigment_operator;
typedef true_type has_trivial_destructor;
typedef true_type is_POD_type;
typedef false_type has_move_constructor;
typedef false_type has_move_assigment_operator;
};
//...省略对其它的原始类型的定义
}
#endif