#if !defined(_TYPE_TRAITS) #define _TYPE_TRAITS namespace std { /// integral_constant template struct integral_constant { static const _Tp value = __v; typedef _Tp value_type; typedef integral_constant<_Tp, __v> type; }; /// typedef for true_type typedef integral_constant true_type; /// typedef for false_type typedef integral_constant false_type; template const _Tp integral_constant<_Tp, __v>::value; /// remove_const template struct remove_const { typedef _Tp type; }; /// remove_volatile template struct remove_volatile { typedef _Tp type; }; /// remove_cv template struct remove_cv { typedef typename remove_const::type>::type type; }; template struct _is_integral_type : public false_type { }; template<> struct _is_integral_type: public integral_constant {}; template<> struct _is_integral_type: public integral_constant {}; template<> struct _is_integral_type: public integral_constant {}; template<> struct _is_integral_type: public integral_constant {}; template<> struct _is_integral_type: public integral_constant {}; template<> struct _is_integral_type: public integral_constant {}; template<> struct _is_integral_type: public integral_constant {}; template<> struct _is_integral_type: public integral_constant {}; template<> struct _is_integral_type: public integral_constant {}; template<> struct _is_integral_type: public integral_constant {}; template<> struct _is_integral_type: public integral_constant {}; template<> struct _is_integral_type: public integral_constant {}; /// is_integral template struct is_integral : public integral_constant::type>::value)> { }; /// is_same template struct is_same : public false_type { }; template struct is_same<_Tp, _Tp> : public true_type { }; template struct __is_pointer_helper : public false_type { }; template struct __is_pointer_helper<_Tp*> : public true_type { }; /// is_pointer template struct is_pointer : public integral_constant::type>::value)> { }; } #endif