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

隨筆-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>
            亚洲国产精品一区二区第四页av| 亚洲欧美日本视频在线观看| 中文在线资源观看网站视频免费不卡 | 狠狠色综合播放一区二区| 国产精品资源在线观看| 国产精品xxxav免费视频| 国产精品久久久久秋霞鲁丝| 国产毛片一区| 亚洲国产欧美一区二区三区久久| 亚洲国产美女精品久久久久∴| 1024成人网色www| 亚洲免费大片| 午夜精品久久一牛影视| 久久嫩草精品久久久精品| 欧美好骚综合网| 一区二区三区日韩欧美精品| 午夜精品福利视频| 欧美va天堂| 国产精品一区二区三区观看 | 国产无遮挡一区二区三区毛片日本| 国产精品色一区二区三区| 精品成人一区二区三区| 一区二区三区国产在线| 久久国产乱子精品免费女| 每日更新成人在线视频| 日韩午夜av电影| 久久久久久久一区| 国产精品久久一卡二卡| 亚洲激情图片小说视频| 亚洲欧美日韩在线不卡| 亚洲电影网站| 亚洲天堂成人在线观看| 亚洲国产精品精华液2区45| 亚洲一二区在线| 久久久综合免费视频| 亚洲国内自拍| 久久久久久久久久看片| 国产精品国产三级国产aⅴ9色| 尹人成人综合网| 午夜精品一区二区三区在线视| 欧美激情aⅴ一区二区三区| 亚洲一区二区在线播放| 欧美日韩国产大片| 亚洲精品免费看| 美日韩精品免费| 亚洲与欧洲av电影| 欧美视频在线观看免费| 亚洲精品午夜| 久久国产手机看片| 亚洲国产精品一区二区久| 亚洲综合电影一区二区三区| 欧美黄色一区二区| 1769国内精品视频在线播放| 欧美专区18| 亚洲一区二区日本| 国产精品久久九九| 亚洲综合日韩中文字幕v在线| 亚洲激情视频| 欧美激情精品久久久久久久变态| 精品51国产黑色丝袜高跟鞋| 久久不射中文字幕| 亚洲欧美在线视频观看| 国产精品日韩精品欧美精品| 亚洲少妇在线| 一区二区三区国产盗摄| 欧美色区777第一页| 亚洲夜间福利| 亚洲欧美一区二区三区在线| 国产视频精品免费播放| 久久久欧美精品sm网站| 欧美在线观看视频在线| 韩国欧美一区| 欧美高清视频www夜色资源网| 久久综合九色综合久99| 亚洲大片av| 亚洲二区在线视频| 欧美激情一区三区| 亚洲一区欧美| 99在线精品视频在线观看| 国产亚洲欧美另类中文| 亚洲片在线观看| 欧美精品免费观看二区| 一区二区三区|亚洲午夜| 亚洲午夜av电影| 国产午夜精品久久久| 蜜桃av综合| 欧美精品首页| 香蕉国产精品偷在线观看不卡| 欧美一级视频一区二区| 亚洲国产经典视频| 一区二区欧美国产| 黄色国产精品| 国产精品99久久久久久久久久久久 | 欧美日韩 国产精品| 亚洲综合另类| 久久久久久欧美| 99综合电影在线视频| 亚洲欧美文学| 亚洲久久在线| 香蕉久久夜色精品国产| 亚洲乱码国产乱码精品精98午夜 | 久久一区视频| 亚洲图色在线| 国产精品久久久久999| 久久精品一区二区三区中文字幕| 欧美一区观看| 日韩午夜黄色| 久久久精品日韩欧美| 亚洲一区二区三区四区在线观看 | 欧美日韩日本网| 久久久久久久一区二区三区| 欧美精品在线极品| 老鸭窝毛片一区二区三区 | 久久理论片午夜琪琪电影网| 亚洲性图久久| 免费在线欧美黄色| 久久躁狠狠躁夜夜爽| 国产精品美女久久| 亚洲精品视频一区二区三区| 亚洲成人在线网| 亚洲欧美视频在线| 一区二区三区 在线观看视| 久久欧美中文字幕| 久久激情五月丁香伊人| 国产精品久久久久aaaa| 亚洲精品日产精品乱码不卡| 有码中文亚洲精品| 欧美亚洲一区二区三区| 亚洲欧美中文日韩v在线观看| 欧美精品在线视频| 亚洲国产精品久久91精品| 亚洲国产精品va在看黑人| 久久精品国产亚洲a| 久久精品视频导航| 国产午夜精品在线| 欧美在线播放一区| 久久久久一区二区| 国产真实乱子伦精品视频| 香蕉久久夜色精品| 久久亚洲春色中文字幕| 影音先锋久久精品| 久久在线播放| 亚洲第一中文字幕| 亚洲另类在线一区| 欧美日韩喷水| 中文一区在线| 欧美中文在线字幕| 国内一区二区三区| 久久尤物视频| 亚洲激情欧美| 亚洲一区观看| 国产亚洲欧美aaaa| 每日更新成人在线视频| 亚洲国产激情| 亚洲一二三区视频在线观看| 国产精品欧美一区二区三区奶水 | 在线观看欧美一区| 免播放器亚洲| 99国产精品私拍| 欧美一区二区久久久| 国内精品99| 蘑菇福利视频一区播放| 伊人久久久大香线蕉综合直播| 先锋影音一区二区三区| 久久九九久久九九| 亚洲第一精品福利| 欧美日韩精品欧美日韩精品一| 亚洲无限av看| 免费日韩一区二区| 一本色道久久综合狠狠躁的推荐| 欧美三级午夜理伦三级中视频| 亚洲欧美精品中文字幕在线| 久久综合色88| 在线亚洲一区二区| 红桃视频亚洲| 欧美午夜免费电影| 久久黄色网页| 日韩网站在线观看| 久久综合中文| 亚洲天堂成人| 亚洲国产精品日韩| 国产九色精品成人porny| 牛牛影视久久网| 亚洲免费婷婷| 亚洲精品久久久久久下一站 | 国产精品高潮呻吟久久av无限 | 亚洲欧美日韩国产中文在线| 日韩午夜三级在线| 久久婷婷av| 日韩午夜免费| 国产综合色精品一区二区三区| 欧美福利视频网站| 欧美资源在线观看| 亚洲小视频在线观看| 亚洲成色777777女色窝| 久久aⅴ乱码一区二区三区| 一区二区三区日韩精品| 亚洲黄色一区二区三区| 一区免费观看视频| 国产无遮挡一区二区三区毛片日本|