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

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

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

    so true

    心懷未來,開創(chuàng)未來!
    隨筆 - 160, 文章 - 0, 評(píng)論 - 40, 引用 - 0
    數(shù)據(jù)加載中……

    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 閱讀(202) 評(píng)論(0)  編輯  收藏 所屬分類: C&C++

    主站蜘蛛池模板: 亚洲精品夜夜夜妓女网| 亚洲av永久无码嘿嘿嘿| www免费插插视频| 国产成人免费爽爽爽视频| 亚洲av丰满熟妇在线播放| 狠狠躁狠狠爱免费视频无码| 最新免费jlzzjlzz在线播放| 久久久久亚洲精品日久生情| 国产一区二区免费| 国产亚洲日韩在线三区| 免费看内射乌克兰女| 国产美女a做受大片免费| 亚洲伊人久久大香线蕉影院| 久久精品无码专区免费青青| 丁香五月亚洲综合深深爱| 一区二区免费在线观看| 免费一级毛片一级毛片aa| 亚洲人成网站在线播放2019| 美女网站免费福利视频| 亚洲国产成人超福利久久精品| 久久久久免费看成人影片| 亚洲日本中文字幕区| 久久99精品免费视频| 亚洲动漫精品无码av天堂| a级片在线免费看| 国产av天堂亚洲国产av天堂| 中文精品人人永久免费| 亚洲国产另类久久久精品小说| 中文在线免费看视频| 亚洲无线码一区二区三区| 中国精品一级毛片免费播放| 亚洲人成色77777| 99在线免费视频| 亚洲va久久久噜噜噜久久男同 | 大学生一级毛片免费看| 亚洲国产中文在线视频| 国产一卡二卡3卡四卡免费| 性xxxx黑人与亚洲| 精品无码国产污污污免费| 99亚洲乱人伦aⅴ精品| 免费不卡中文字幕在线|