青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

隨筆-162  評論-223  文章-30  trackbacks-0
   本文就Loki編譯期技術中的類型列表Typelist作了一些擴展,增加了以下幾個方法:
      • 獲取最大和最小長度,即求取Typelist中長度最大和最小的值  
      • 獲取最大和最小類型,即求取Typelist中長度最大和最小的類型


實現
   位于Loki::TL命名空間,利用遞歸計算最值結果,使用宏生成主類模板和特化類模板,其中后綴為DEFN(N為正整數)形式的宏中N表示特化類模板所帶的模板參數數量,使用DEF1宏定義對應的特化類模板的原因在于:當Typelist中存在非NullType類型時,保證結果的正確性。當N為2時參數取值:name為Max則b為true;name為Min則b為false。
   主類模板
   用于定義MaxSize、MinSize和MaxType、MinType主類模板,使用宏LOKI_TYPELIST_METHOD_DEF生成。 
1    #define LOKI_TYPELIST_METHOD_DEF(name)\
2    template <class TList>\
3    struct name;\
4    
5    LOKI_TYPELIST_METHOD_DEF(MaxSize)
6    LOKI_TYPELIST_METHOD_DEF(MinSize)
7    LOKI_TYPELIST_METHOD_DEF(MaxType)
8    LOKI_TYPELIST_METHOD_DEF(MinType)

   最大(小)長度
   對應類主模板分別為MaxSize和MinSize,每種有3個特化模板,使用宏LOKI_TYPELIST_SIZE_SPEC_DEFN生成(N為0、1、2)。
 1    #define LOKI_TYPELIST_SIZE_SPEC_DEF0(name)\
 2    template<>\
 3    struct name##Size<NullType>\
 4    {\
 5        enum { value = 0 };\
 6    }
;\
 7    
 8    #define LOKI_TYPELIST_SIZE_SPEC_DEF1(name)\
 9    template<class T>\
10    struct name##Size<Typelist<T,NullType> >\
11    {\
12        enum { value = sizeof(T) };\
13    }
;\
14    
15    #define LOKI_TYPELIST_SIZE_SPEC_DEF2(name,b)\
16    template<class T,class U>\
17    struct name##Size<Typelist<T,U> >\
18    {\
19        enum { tmp = name##Size<U>::value };\
20        enum { value = (b ? sizeof(T) > tmp : sizeof(T) < tmp) ? sizeof(T) : tmp };\
21    }
;\
22    
23    LOKI_TYPELIST_SIZE_SPEC_DEF0(Max)
24    LOKI_TYPELIST_SIZE_SPEC_DEF0(Min)
25    LOKI_TYPELIST_SIZE_SPEC_DEF1(Max)
26    LOKI_TYPELIST_SIZE_SPEC_DEF1(Min)
27    LOKI_TYPELIST_SIZE_SPEC_DEF2(Max,true)
28    LOKI_TYPELIST_SIZE_SPEC_DEF2(Min,false)
29    
30    #undef LOKI_TYPELIST_SIZE_SPEC_DEF0
31    #undef LOKI_TYPELIST_SIZE_SPEC_DEF1
32    #undef LOKI_TYPELIST_SIZE_SPEC_DEF2

   最大(小)類型
   對應類主模板分別為MaxType和MinType,每種有3個特化模板,使用宏LOKI_TYPELIST_TYPE_SPEC_DEFN生成(N為0、1、2)。   
 1    #define LOKI_TYPELIST_TYPE_SPEC_DEF0(name)\
 2    template<>\
 3    struct name##Type<NullType>\
 4    {\
 5        typedef NullType type;\
 6    }
;\
 7    
 8    #define LOKI_TYPELIST_TYPE_SPEC_DEF1(name)\
 9    template<class T>\
10    struct name##Type<Typelist<T,NullType> >\
11    {\
12        typedef T type;\
13    }
;\
14    
15    #define LOKI_TYPELIST_TYPE_SPEC_DEF2(name,b)\
16    template<class T,class U>\
17    struct name##Type<Typelist<T,U> >\
18    {\
19        typedef typename name##Type<U>::type R;\
20        typedef typename Select< b ? (sizeof(T)>sizeof(R)) : (sizeof(T)<sizeof(R)),T,R>::Result type;\
21    }
;\
22    
23    LOKI_TYPELIST_TYPE_SPEC_DEF0(Max)
24    LOKI_TYPELIST_TYPE_SPEC_DEF0(Min)
25    LOKI_TYPELIST_TYPE_SPEC_DEF1(Max)
26    LOKI_TYPELIST_TYPE_SPEC_DEF1(Min)
27    LOKI_TYPELIST_TYPE_SPEC_DEF2(Max,true)
28    LOKI_TYPELIST_TYPE_SPEC_DEF2(Min,false)
29    
30    #undef LOKI_TYPELIST_TYPE_SPEC_DEF0
31    #undef LOKI_TYPELIST_TYPE_SPEC_DEF1
32    #undef LOKI_TYPELIST_TYPE_SPEC_DEF2
   這里用到了Loki中的Select組件來選擇類型。

示例
   使用LOKI中的LOKI_STATIC_CHECK宏來做編譯期診斷結果正確性。
 1#define LOKI_TL4 LOKI_TYPELIST_4(double,int,short,char) 
 2
 3int main(int argc,char *argv[])
 4{
 5    static const int max_val = Loki::TL::MaxSize<LOKI_TL4 >::value;
 6    LOKI_STATIC_CHECK(max_val==sizeof(double),max_val_should_be_sizeof_double)
 7
 8    static const int min_val = Loki::TL::MinSize<LOKI_TL4 >::value;
 9    LOKI_STATIC_CHECK(min_val==sizeof(char),min_val_should_be_sizeof_char)
10
11    typedef Loki::TL::MaxType<LOKI_TL4 >::type max_type;
12    LOKI_STATIC_CHECK((Loki::IsSameType<max_type,double>::value),max_type_should_be_double)
13
14    typedef Loki::TL::MinType<LOKI_TL4 >::type min_type;
15    LOKI_STATIC_CHECK((Loki::IsSameType<min_type,char>::value),min_type_should_be_char)
16
17    return 0;
18}
posted on 2012-05-29 01:03 春秋十二月 閱讀(1912) 評論(2)  編輯 收藏 引用 所屬分類: C/C++

評論:
# re: 關于Loki中Typelist的一點擴展 2012-05-29 11:20 | 空明流轉
用MPL吧。。。loki在設計上很不成熟,遠不如MPL來的系統化。。。  回復  更多評論
  
# re: 關于Loki中Typelist的一點擴展[未登錄] 2012-05-29 16:55 | 春秋十二月
@空明流轉
都用過
  回復  更多評論
  
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            亚洲第一精品在线| 美女视频一区免费观看| 美女91精品| 激情久久久久久久久久久久久久久久| 制服丝袜亚洲播放| 在线视频一区观看| 国产欧美日韩综合一区在线播放 | 欧美日韩在线三区| 久久精品亚洲精品| 亚洲国产精品女人久久久| 亚洲精品在线一区二区| 久久精品中文字幕免费mv| 国产一区av在线| 久久综合电影| 欧美成人免费在线视频| 亚洲一区二区三区激情| 欧美日韩性生活视频| 国产一区久久久| 欧美激情五月| 国产精品亚洲人在线观看| 久久综合色影院| 欧美美女bbbb| 久久久久国产精品午夜一区| 欧美成人嫩草网站| 欧美影院一区| 欧美精品黄色| 国产伦精品一区二区三区免费迷 | 亚洲乱码国产乱码精品精98午夜| 国产精品久久久久久久久久久久久| 欧美在线一二三| 欧美精彩视频一区二区三区| 久久精品观看| 国产精品h在线观看| 欧美激情片在线观看| 国产精品一区一区| 日韩午夜三级在线| 亚洲国产欧美一区二区三区丁香婷| 亚洲色图在线视频| 亚洲美女视频网| 久久精品日韩| 久久爱另类一区二区小说| 欧美国产一区二区在线观看| 久久综合久色欧美综合狠狠| 亚洲在线成人| 亚洲欧美日韩在线| 久久久久久久久岛国免费| 免费成人黄色片| 亚洲无吗在线| 欧美成人精品在线视频| 久久偷窥视频| 国产私拍一区| 亚洲一区图片| 亚洲欧美日韩中文播放| 欧美日韩国产va另类| 欧美黄色一区二区| 尤妮丝一区二区裸体视频| 欧美永久精品| 久久精品国产2020观看福利| 国产精品毛片a∨一区二区三区|国| 欧美日韩国产首页在线观看| 亚洲精品黄色| 亚洲美女91| 欧美经典一区二区三区| 欧美成人黑人xx视频免费观看| 中国av一区| 欧美日韩亚洲三区| 免费成人在线观看视频| 男同欧美伦乱| 亚洲高清影视| 欧美福利一区| 亚洲精品欧美| 亚洲尤物精选| 国产麻豆精品视频| 午夜精品在线观看| 欧美日韩少妇| 亚洲欧美日韩综合| 国产精品一区亚洲| 久久成人一区| 欧美高清视频| aa级大片欧美三级| 国产精品美女久久久久久2018 | 亚洲国产成人精品女人久久久 | 国产精品久久精品日日| 亚洲在线观看免费| 国产精品久久久久久妇女6080| 亚洲视频久久| 久久九九国产精品| 亚洲激情在线观看| 欧美午夜电影在线观看| 性欧美长视频| 亚洲国产精品久久久久婷婷老年| 亚洲美女色禁图| 国产午夜精品一区二区三区欧美| 久久久福利视频| 亚洲精品日韩一| 久久国产精品高清| 亚洲精选国产| 国产又爽又黄的激情精品视频| 久久网站免费| 中文有码久久| 欧美激情精品久久久久久| 亚洲午夜视频| 亚洲国产精品第一区二区| 国产精品久久福利| 久久午夜精品一区二区| 亚洲视频网在线直播| 欧美激情在线观看| 久久精品30| 亚洲视频大全| 亚洲国产裸拍裸体视频在线观看乱了中文 | 亚洲黄色精品| 国产精品一区二区黑丝| 欧美国产第二页| 欧美综合二区| 亚洲永久字幕| 亚洲伦理久久| 亚洲福利视频一区| 久久尤物视频| 欧美在线精品一区| 亚洲一二三区在线| 亚洲三级观看| 悠悠资源网亚洲青| 国产在线精品自拍| 国产精品老牛| 国产精品白丝av嫩草影院| 欧美大胆a视频| 免费观看久久久4p| 久久免费的精品国产v∧| 欧美亚洲尤物久久| 在线亚洲+欧美+日本专区| 亚洲精品国产系列| 亚洲国产欧美不卡在线观看| 欧美成人国产| 久热精品视频在线免费观看 | 亚洲激情视频网| 在线精品国精品国产尤物884a| 国产欧美在线看| 老司机一区二区三区| 国产女主播一区二区三区| 亚洲永久免费av| 91久久精品国产91久久| 亚洲国产精品视频一区| 欧美国产日韩二区| 亚洲盗摄视频| 亚洲第一在线| 亚洲精品国产视频| 亚洲精品免费电影| 99www免费人成精品| 日韩视频中午一区| 亚洲午夜激情免费视频| 亚洲一区二区在线视频| 亚洲欧美中文另类| 欧美一区二区三区视频免费| 欧美一区三区二区在线观看| 久久九九免费| 欧美国产日韩一区二区三区| 欧美激情视频在线免费观看 欧美视频免费一 | 欧美老女人xx| 欧美人与禽猛交乱配视频| 欧美精品偷拍| 国产女精品视频网站免费| 国产亚洲欧美激情| 亚洲国产精品电影在线观看| 99视频精品全国免费| 亚洲一区二区免费在线| 久久久欧美一区二区| 欧美国产日韩免费| 在线一区免费观看| 欧美在线播放一区| 欧美激情视频给我| 国产日韩1区| 亚洲国产二区| 亚洲自拍偷拍麻豆| 母乳一区在线观看| 亚洲免费高清视频| 香蕉精品999视频一区二区| 久热精品视频在线观看| 国产精品福利久久久| 精品电影在线观看| 亚洲图片你懂的| 久久亚洲春色中文字幕久久久| 最新国产の精品合集bt伙计| 亚洲一区免费观看| 欧美成人免费大片| 国内激情久久| 亚洲免费影视| 欧美成人激情视频免费观看| 亚洲色图自拍| 欧美激情按摩在线| 国产深夜精品福利| 亚洲视频一二区| 欧美成人资源网| 欧美在线电影| 国产精品v日韩精品| 亚洲国产乱码最新视频| 久久男女视频| 亚洲欧美精品suv| 欧美日韩一区成人| 亚洲国产欧美日韩精品| 久久综合九色综合久99|