1.type traits使用
http://www.cplusplus.com/reference/type_traits/
#include <iostream>
#include <typeinfo>
using namespace std;
template<typename T>
void type_traits_output(const T& x) {
        cout << "\ntye traits for type : " << typeid(T).name() << endl;
        cout << "is_void\t" << is_void<T>::value << endl;
        cout << "is_integral\t" << is_integral<T>::value << endl;
		cout << "is_arithmetic\t" << is_arithmetic<T>::value << endl;
}
int main() {
        type_traits_output(5);
        type_traits_output(string());
        return 0;
}
2.type traits实现
(1)通过模板偏特化实现
 
//remove_const 
 template<typename _Tp>
 struct remove_const {
 typedef _Tp type;
 };
 
 
 template<typename _Tp>
 struct remove_const<_Tp const> {
 typedef _Tp type;
 };
 
 
 //remove_volatile
 template<typename _Tp>
 struct remove_volatile {
 typedef _Tp type;
 };
 
 template<typename _Tp>
 struct remove_volatile<_Tp volatile> {
 typedef _Tp type;
 };
 
 //remove_cv
 template<typename _Tp>
 struct remove_cv {
 typedef typename 
 remove_const<typename remove_volatile<_Tp>::type>::type type;
 };
 
 
 template<typename>
 struct __is_void_helper : public false_type {
 };
 
 template<typename>
 struct __is_void_helper : public true_type {
 };
 
 template<typename _Tp>
 struct is_void : public __is_void_helper<typename remove_cv<_Tp>::type>::type {
 };
(2)通过编译器实现
 
                  
                  
                  
                  
                            
      
          
                
                
                
                
              
                
                
                
                
                
              
                
                
              
            
                  
					4667
					
被折叠的  条评论
		 为什么被折叠?
		 
		 
		
    
  
    
  
            


            