• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            隨筆 - 31  文章 - 128  trackbacks - 0
            <2011年12月>
            27282930123
            45678910
            11121314151617
            18192021222324
            25262728293031
            1234567

            常用鏈接

            留言簿(5)

            隨筆分類(38)

            隨筆檔案(31)

            收藏夾(4)

            College

            High School

            • 巧克力男
            • 猶大
            • 哈哈,同行了

            最新隨筆

            搜索

            •  

            積分與排名

            • 積分 - 55886
            • 排名 - 407

            最新評論

            • 1.?re: [yc]詳解link
            • 面試的時候面試官就問過我什么是編譯和鏈接,我說編譯就是把代碼文件生成目標文件,鏈接就是把目標文件生成可執行文件,他說不對,又問我什么是動態鏈接,還問我預編譯都做什么處理。。。都在這里找到了答案!?。。?
            • --王至乾
            • 2.?re: [yc]詳解link
            • @劉偉
              我是說博主,不是叫你啊
            • --溪流
            • 3.?re: [yc]詳解link
            • 誰是石老師,我不是哈@溪流
            • --劉偉
            • 4.?re: [yc]詳解link
            • 石老師?我是溪流~
            • --溪流
            • 5.?re: [yc]詳解link
            • 期待樓主下文啊,多謝樓主了
            • --劉偉

            閱讀排行榜

            評論排行榜



            發信人: shifan (學習浮云技術), 板面: C++
            標  題: 偽typeof
            發信站: 飄渺水云間 (Tue Dec 19 16:38:45 2006), 轉信
             1 /*
             2 用標準C++實現typeof是不可能的
             3 這個是我寫的一個approached typeof
             4 所有需要被靜態反射出來的類型必須先用DECL_TYPE注冊
             5 模板如果僅僅帶有1個參數可以用DECL_TEMPLATE_1注冊
             6 多個參數的模板還不支持。。
             7 主要是沒想好編碼
             8 
             9 總共能注冊64個類型
            10 可以通過MAX_TYPE_NUMBER設置
            11 
            12 支持的模板嵌套層數大約為32 / log2(MAX_TYPE_NUMBER)
            13 MAX_TYPE_NUMBER必須為2的整次數冪
            14 */
            15 namespace my_typeof
            16 {
            17 
            18   const int MAX_TYPE_NUMBER = 64;
            19 
            20   template <int N>
            21   struct dummy
            22   {
            23     int a[N];
            24   };
            25 
            26 
            27   template <int N, typename Arg1>
            28   struct select_by_number_1;
            29 
            30   template <int N>
            31   struct select_by_number
            32   {
            33     typedef typename select_by_number_1<% MAX_TYPE_NUMBER, typename
            34 select_by_number</ MAX_TYPE_NUMBER>::type>::type type;
            35   };
            36 
            37 
            38   template <typename T>
            39   struct number_of
            40   {
            41     static const int v = sizeof(generic_f(*(T*)0)) / sizeof(int);
            42   };
            43 
            44 
            45 #define DECL_TYPE(T, N) \
            46   namespace my_typeof{  \
            47   template<>\
            48   struct select_by_number<N> \
            49   {\
            50     typedef T type;\
            51   };\
            52   dummy <N> generic_f(const T&);}
            53 
            54 
            55 #define DECL_TEMPLATE_1(T, N) \
            56   namespace my_typeof{        \
            57   template<typename Arg1>\
            58   struct select_by_number_1<N, Arg1>\
            59   {\
            60     typedef T<Arg1> type;\
            61   };\
            62   template <typename Arg1>\
            63   dummy<+ number_of<Arg1>::v * MAX_TYPE_NUMBER > generic_f(const T<Arg1>&);}
            64 
            65 
            66 
            67 #define TYPE_OF(x) my_typeof::select_by_number<sizeof(my_typeof::generic_f(x)) /
            68 sizeof (int)>::type
            69 
            70 }
            71 
            72 
            73 //sample
            74 #include <iostream>
            75 #include <vector>
            76 #include <list>
            77 
            78 
            79 DECL_TYPE(int1);
            80 DECL_TEMPLATE_1(std::vector, 2);
            81 DECL_TEMPLATE_1(std::list, 3);
            82 DECL_TYPE(double4)
            83 
            84 using namespace std;
            85 int main(intchar*[])
            86 {
            87   vector<list<vector<list<double> > > > v1;
            88   TYPE_OF(v1) v2;
            89   v1 = v2;
            90   return 0;
            91 }
            92 
            93 


            --
            You well 撒法!You well all 撒法!

            ※ 內容修改:·shifan 于 Dec 21 14:21:57 修改本文內容·[FROM: shifan]
            ※ 來源:·飄渺水云間 freecity.cn·[FROM: shifan]
            posted on 2006-12-21 14:29 shifan3 閱讀(2644) 評論(8)  編輯 收藏 引用 所屬分類: templateC++

            FeedBack:
            # re: 偽typeof 2006-12-22 14:10 yayv
            C++標準中有RTTI阿,為什么不考慮下?  回復  更多評論
              
            # re: 偽typeof 2006-12-22 16:07 小山日志
            多個參數模板可不可以參考Loki里的Typelist來做,Template編程偶不熟,只是提議。

            to yayv:C++的RTTI是不能運行時創建對象的,shifan的題目改為“C++的模擬反射機制”合適些。  回復  更多評論
              
            # re: 偽typeof 2007-01-12 13:58 linghuchong
            寒,一開始以為是某些編譯器的類似sizeof的typeof關鍵字,結果發現不是……

            不過既然是動態的為什么要加這么多限制呢?  回復  更多評論
              
            # re: 偽typeof 2007-01-12 14:09 Francis Arcanum
            @linghuchong
            誰說是動態的?  回復  更多評論
              
            # re: [yc]偽typeof 2007-11-09 17:11 liuhs
            寫的不錯!  回復  更多評論
              
            # re: [yc]偽typeof 2008-07-22 22:51 xiaowei
            baidu 到 shifan大神的blog,進來膜拜一下  回復  更多評論
              
            # re: [yc]偽typeof 2009-01-07 17:17 lsxx
            我也在考慮這個,要是標準里有就好了  回復  更多評論
              
            # re: [yc]偽typeof[未登錄] 2011-12-31 00:40 春秋十二月
            模板功底的確不錯  回復  更多評論
              
            久久亚洲国产欧洲精品一| 合区精品久久久中文字幕一区 | 精品国产青草久久久久福利| 国产精品禁18久久久夂久| 久久亚洲视频| 久久精品国产99久久久香蕉| 国产欧美久久一区二区| 亚洲狠狠婷婷综合久久久久| 亚洲一区精品伊人久久伊人| 日日狠狠久久偷偷色综合免费| 久久中文娱乐网| 四虎国产精品免费久久久| 7777久久亚洲中文字幕| 777米奇久久最新地址| 国产美女久久精品香蕉69| 狠狠色丁香久久婷婷综| 99久久免费国产特黄| 国产精品一久久香蕉产线看| 久久久久亚洲AV无码网站| 久久亚洲精品无码AV红樱桃| 久久影院综合精品| 精品久久久久久无码专区| 91久久福利国产成人精品| 久久免费视频6| 思思久久精品在热线热| 久久久久久久久久久精品尤物| 久久免费视频1| 韩国免费A级毛片久久| 久久九九全国免费| 久久久久99这里有精品10| 国内高清久久久久久| 精品久久久久久亚洲精品| 久久国产一片免费观看| 无码任你躁久久久久久| 久久人人爽人人爽人人AV东京热| 久久福利青草精品资源站免费| 久久精品一区二区影院 | 三上悠亚久久精品| 99久久婷婷国产综合亚洲| 要久久爱在线免费观看| 国产麻豆精品久久一二三|