SHARE
TWEET

Untitled

a guest Feb 19th, 2019 88 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <iostream>                                                                                                                                                                                                                      
  2.  13 #include <typeinfo>                                                                                                                                                                                                                      
  3.  12 #include <string_view>                                                                                                                                                                                                                  
  4.  11                                                                                                                                                                                                                                          
  5.  10 template <class T>                                                                                                                                                                                                                      
  6.   9 constexpr std::string_view type_name()                                                                                                                                                                                                  
  7.   8 {                                                                                                                                                                                                                                        
  8.   7     using namespace std;                                                                                                                                                                                                                
  9.   6 #ifdef __clang__                                                                                                                                                                                                                        
  10.   5     string_view p = __PRETTY_FUNCTION__;                                                                                                                                                                                                
  11.   4     return string_view(p.data() + 34, p.size() - 34 - 1);                                                                                                                                                                                
  12.   3 #elif defined(__GNUC__)                                                                                                                                                                                                                  
  13.   2     string_view p = __PRETTY_FUNCTION__;                                                                                                                                                                                                
  14.   1 #  if __cplusplus < 201402                                                                                                                                                                                                              
  15. 15      return string_view(p.data() + 36, p.size() - 36 - 1);                                                                                                                                                                                
  16.   1 #  else                                                                                                                                                                                                                                  
  17.   2     return string_view(p.data() + 49, p.find(';', 49) - 49);                                                                                                                                                                            
  18.   3 #  endif                                                                                                                                                                                                                                
  19.   4 #elif defined(_MSC_VER)                                                                                                                                                                                                                  
  20.   5     string_view p = __FUNCSIG__;                                                                                                                                                                                                        
  21.   6     return string_view(p.data() + 84, p.size() - 84 - 7);                                                                                                                                                                                
  22.   7 #endif                                                                                                                                                                                                                                  
  23.   8 }                                                                                                                                                                                                                                        
  24.   9                                                                                                                                                                                                                                          
  25.  10 using namespace std;                                                                                                                                                                                                                    
  26.  11                                                                                                                                                                                                                                          
  27.  12 template<typename T>                                                                                                                                                                                                                    
  28.  13 void f(T& param)                                                                                                                                                                                                                        
  29.  14 {                                                                                                                                                                                                                                        
  30.  15     cout << "type_name<decltype(param)>() = " << type_name<decltype(param)>() << endl;                                                                                                                                                  
  31.  16     cout << "type_name<T>() = " << type_name<T>() << endl;                                                                                                                                                                              
  32.  17     cout << endl;                                                                                                                                                                                                                        
  33.  18 }                                                                                                                                                                                                                                        
  34.  19                                                                                                                                                                                                                                          
  35.  20                                                                                                                                                                                                                                          
  36.  21 int main()                                                                                                                                                                                                                              
  37.  22 {                                                                                                                                                                                                                                        
  38.  23     int x = 5;                                                                                                                                                                                                                          
  39.  24     const int y = x;                                                                                                                                                                                                                    
  40.  25     const int& z = x;                                                                                                                                                                                                                    
  41.  26     f(x);                                                                                                                                                                                                                                
  42.  27     f(y);                                                                                                                                                                                                                                
  43.  28     f(z);                                                                                                                                                                                                                                
  44.  29 }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top