<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    so true

    心懷未來,開創未來!
    隨筆 - 160, 文章 - 0, 評論 - 40, 引用 - 0
    數據加載中……

    type_to_pointer

      1 #include <iostream>
      2 #include <typeinfo>
      3 #include <string>
      4 #include <fstream>
      5 #include <sstream>
      6 #include <stdint.h>
      7 #include <pthread.h>
      8 #include <unistd.h>
      9 #include <string.h>
     10 #include <vector>
     11 #include <map>
     12 #include <set>
     13 
     14 using namespace std;
     15 
     16 template<typename T>
     17 struct type_to_pointer { typedef T* type; };
     18 template <typename T>
     19 struct type_to_pointer<T*> { typedef T* type; };
     20 template <typename T>
     21 struct type_to_pointer<const T*> { typedef T* type; };
     22 template <typename T>
     23 struct type_to_pointer<T*const> { typedef T* type; };
     24 template <typename T>
     25 struct type_to_pointer<const T *const> { typedef T* type; };
     26 template <typename T>
     27 struct type_to_pointer<T**> { typedef T* type; };
     28 template <typename T>
     29 struct type_to_pointer<const T**> { typedef T* type; };
     30 template <typename T>
     31 struct type_to_pointer<T**const> { typedef T* type; };
     32 template <typename T>
     33 struct type_to_pointer<T&> { typedef T* type; };
     34 template <typename T>
     35 struct type_to_pointer<T&&> { typedef T* type; };
     36 template <typename T>
     37 struct type_to_pointer<const T&> { typedef T* type; };
     38 template <typename T, int N>
     39 struct type_to_pointer<T[N]> { typedef T* type; };
     40 template <typename T, int N>
     41 struct type_to_pointer<const T[N]> { typedef T* type; };
     42 template <typename T, int N>
     43 struct type_to_pointer<T*[N]> { typedef T* type; };
     44 template <typename T, int N>
     45 struct type_to_pointer<const T*[N]> { typedef T* type; };
     46 template <typename T, int N>
     47 struct type_to_pointer<const T *const[N]> { typedef T* type; };
     48 
     49 template <typename FromType, typename ToType = void>
     50 void type_printer() {
     51     cout << __PRETTY_FUNCTION__ << endl;
     52 }
     53 
     54 #define TYPE_PRINT(var) type_printer<decltype(var), type_to_pointer<decltype(var)>::type>()
     55 #define CONST_CAST_TO_POINTER(var) const_cast<typename type_to_pointer<decltype(var)>::type>(var)
     56 
     57 int main(int argc, char* argv[]) {
     58     int x1 = 0;
     59     TYPE_PRINT(x1);
     60 
     61     const int& x2 = x1;
     62     TYPE_PRINT(x2);
     63 
     64     const int* x3 = &x1;
     65     TYPE_PRINT(x3);
     66     TYPE_PRINT(CONST_CAST_TO_POINTER(x3));
     67 
     68     const int *const x4 = &x1;
     69     TYPE_PRINT(x4);
     70     TYPE_PRINT(CONST_CAST_TO_POINTER(x4));
     71 
     72     int& x5 = x1;
     73     TYPE_PRINT(x5);
     74 
     75     int *const x6 = &x1;
     76     TYPE_PRINT(x6);
     77     TYPE_PRINT(CONST_CAST_TO_POINTER(x6));
     78 
     79     int* x7 = &x1;
     80     TYPE_PRINT(x7);
     81 
     82     int&& x8 = 0;
     83     TYPE_PRINT(x8);
     84 
     85     int x9[2] = {1, 2};
     86     TYPE_PRINT(x9);
     87 
     88     const int x10[2] = {1, 2};
     89     TYPE_PRINT(x10);
     90 
     91     int* x11[2] = {NULL, NULL};
     92     TYPE_PRINT(x11);
     93 
     94     const int* x12[2] = {NULL, NULL};
     95     TYPE_PRINT(x12);
     96 
     97     const int *const x13[2] = {NULL, NULL};
     98     TYPE_PRINT(x13);
     99 
    100     TYPE_PRINT(argc);
    101     TYPE_PRINT(argv);
    102     return 0;
    103 }

    posted on 2018-11-08 19:03 so true 閱讀(215) 評論(0)  編輯  收藏 所屬分類: C&C++

    主站蜘蛛池模板: 久久亚洲日韩精品一区二区三区| 亚洲国产精品成人网址天堂| 亚洲av中文无码乱人伦在线咪咕| 伊人久久国产免费观看视频| 国产三级免费电影| 亚洲av片在线观看| 国产成人aaa在线视频免费观看| 亚洲综合精品成人| 成全高清视频免费观看| 亚洲熟女www一区二区三区| 免费无码黄十八禁网站在线观看 | 69天堂人成无码麻豆免费视频| 日韩精品亚洲人成在线观看| 伊人久久免费视频| 亚洲激情视频网站| 国产大片线上免费观看| 亚洲欧美日韩中文字幕一区二区三区 | 成人久久久观看免费毛片| 亚洲国产精品综合久久一线| 一级毛片无遮挡免费全部| 久久亚洲国产欧洲精品一| 免费在线看黄网站| 久久久亚洲欧洲日产国码是AV| 久久综合给合久久国产免费| 亚洲一区精品视频在线| 日韩午夜免费视频| xxxxx做受大片视频免费| 亚洲AV无码一区二区二三区软件 | 在线看片免费人成视频福利| 亚洲一区精品中文字幕| 国产免费看JIZZ视频| 福利片免费一区二区三区| 久久久久噜噜噜亚洲熟女综合| 久久这里只精品国产免费10| 亚洲av乱码一区二区三区香蕉| 国产免费131美女视频| baoyu116.永久免费视频| 久久精品国产亚洲av麻豆图片| 日韩精品电影一区亚洲| 久久久久亚洲AV无码专区网站| 久久这里只精品热免费99|