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

隨筆-14  評(píng)論-8  文章-0  trackbacks-0

      這本來沒什么好說的,不過我在強(qiáng)啃了一天《c++ 模板元編程》這本書后,頭腦昏沉,反應(yīng)遲鈍。也借整理 boost::mpl::if_ 這個(gè)讓我查閱半天源碼的小東西的機(jī)會(huì),讓自己放松一下。

      if_ 就是借 if_c 定義了自己 ::type 的一個(gè)元函數(shù)。之所以我會(huì)對(duì) if_ 迷糊,是因?yàn)槲蚁氘?dāng)然的認(rèn)為 if_ 模板的第一個(gè)參數(shù)類型為 bool 值。這是受了 if 關(guān)鍵字的影響,也有錯(cuò)誤理解 if_c 的原因。且看 if_c 的聲明:

template<
      bool C          // yeah, the type here is bool, but...
    , typename T1
    , typename T2
    >
struct if_c {
    typedef T1 type;
};

template<            // 特化版本,類似這樣定義元函數(shù)的例子很多
      typename T1
    , typename T2
    >
struct if_c<false,T1,T2> {
    typedef T2 type;
};
  既生 if_c ,何生 if_ ?對(duì)比二者的代碼,if_ 比 if_c 多了如下句子:BOOST_MPL_AUX_LAMBDA_SUPPORT(3,if_,(T1,T2,T3))。而在 MSVC(VS2008) 編譯器上這個(gè)句子沒起作用。那它就是為了兼容編譯器而生的,就名字來看和 lambda 表達(dá)式的支持性有關(guān)系。關(guān)于其他編譯器的事情,我不知道,先擱置一邊。再看 if_ 的聲明:
template<
      typename BOOST_MPL_AUX_NA_PARAM(T1)
    , typename BOOST_MPL_AUX_NA_PARAM(T2)
    , typename BOOST_MPL_AUX_NA_PARAM(T3)
    >
struct if_ {
 private:
    // agurt, 02/jan/03: two-step 'type' definition for the sake of aCC 
    typedef if_c<
#if defined(BOOST_MPL_CFG_BCC_INTEGRAL_CONSTANTS)
          BOOST_MPL_AUX_VALUE_WKND(T1)::value
#else
          BOOST_MPL_AUX_STATIC_CAST(bool, BOOST_MPL_AUX_VALUE_WKND(T1)::value)
#endif
        , T2
        , T3
        > almost_type_;
 
 public:
    typedef typename almost_type_::type type;
    BOOST_MPL_AUX_LAMBDA_SUPPORT(3,if_,(T1,T2,T3))
};
    這就很明了了,先用 if_c 確定應(yīng)該使用 T2 還是 T3,再來個(gè)迂回的定義,就成了 ::type 。所以就聲明來看,if_ 的第一個(gè)模板參數(shù)確實(shí)是要求類型。初看時(shí),我郁悶了,如果我喜歡用 value (有些習(xí)慣連自己也感到奇怪!),那我為什么不用 if_c 呢?哈,當(dāng)然可以,如書上的例子:
template <typename T>
struct param_type 
    : mpl::if_<
               typename boost::is_scalar<T>::type,
               T,
               typename boost::add_reference<T const>::type
    > {};
typedef param_type<float>::type float_;
    完全可以改為:
template <typename T>
struct param_type 
    : mpl::if_c<
                boost::is_scalar<T>::value,
                T,
                typename boost::add_reference<T const>::type
    > {};

     對(duì)于書上面的后幾個(gè)簡化,也照樣適用。我就更郁悶了,我前幾十分鐘干嘛去了?死抓著 if_ 不放,不考慮試試其它可能。我想起了昨天對(duì)書上某個(gè)例子的擴(kuò)充,確實(shí)受用(這當(dāng)然不是說作者壞話,他是為了使書寫得清晰明了才不使用在我看來是優(yōu)化的東西的。呃,有點(diǎn)長…),我才再一次責(zé)怪起自己的讀書習(xí)慣。古人云:盡信書不如無書。這句話用到這里就是:別死跟著書走(哪里跟哪里嘛,風(fēng)馬牛不相及,哈哈!)。

     關(guān)于 boost ,我不了解的太多,需要一步一步來,就從簡單的開始吧。現(xiàn)在它可是遠(yuǎn)遠(yuǎn)超出了我的理解范圍,希望能趕上一點(diǎn)是一點(diǎn)。

posted on 2009-12-07 20:47 崇文 閱讀(1083) 評(píng)論(0)  編輯 收藏 引用

只有注冊用戶登錄后才能發(fā)表評(píng)論。
網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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一区二区| 国产精品国产三级国产aⅴ9色| 亚洲国产精品久久人人爱蜜臀| 老**午夜毛片一区二区三区| 久久xxxx| 亚洲欧洲精品一区二区精品久久久| 老司机一区二区| 免费看成人av| 在线亚洲免费| 午夜国产精品视频免费体验区| 国产日韩精品一区| 欧美11—12娇小xxxx| 欧美成人自拍视频| 亚洲婷婷在线| 久久精品成人欧美大片古装| 最新中文字幕一区二区三区| 亚洲最新在线视频| 国产日本亚洲高清| 欧美激情视频网站| 欧美午夜片在线免费观看| 久久精品成人一区二区三区| 久久亚洲高清| 亚洲一区二区三区在线观看视频| 欧美一级专区| 一本色道久久综合狠狠躁篇怎么玩 | 欧美国产日韩免费| 亚洲一区在线观看免费观看电影高清| 亚洲欧美激情在线视频| 在线播放一区| 亚洲一区二区毛片| 亚洲精品乱码久久久久久蜜桃91 | 久久精品123| 欧美激情精品久久久久久变态| 午夜精品久久久久| 欧美 日韩 国产一区二区在线视频| 亚洲网站在线| 免费av成人在线| 久久久噜噜噜久噜久久| 欧美日韩免费区域视频在线观看| 久久久国产精品一区二区三区| 欧美日本在线看| 巨乳诱惑日韩免费av| 国产精品对白刺激久久久| 欧美成人第一页| 国产亚洲日本欧美韩国| 中国亚洲黄色| 日韩亚洲国产欧美| 免费欧美电影| 欧美jizzhd精品欧美巨大免费| 国产精品视频网址| 日韩一区二区精品葵司在线| 亚洲国产女人aaa毛片在线| 欧美一区二区三区四区高清 | 很黄很黄激情成人| 亚洲一区在线看| 亚洲视频在线视频| 欧美另类一区二区三区| 亚洲福利视频在线| 一区二区在线视频播放| 欧美一区激情| 久久久久久久一区二区| 国产亚洲激情在线| 欧美一区二区三区播放老司机| 亚洲在线观看| 国产精品欧美日韩久久| 亚洲午夜av电影| 午夜宅男久久久| 国产精一区二区三区| 亚洲免费一级电影| 久久精品国产清高在天天线| 国产乱码精品一区二区三区av| 亚洲在线1234| 久久久水蜜桃| 一区在线视频观看| 老司机精品视频网站| 亚洲丰满在线| 一区二区三区高清不卡| 国产精品成人v| 亚洲欧美国产视频| 久久中文字幕一区| 亚洲国产另类久久精品| 欧美日本国产精品| 亚洲深夜影院| 久久一区二区三区四区| 亚洲日本无吗高清不卡| 欧美日韩三区四区| 亚洲欧美大片| 美女精品视频一区| 99国产精品视频免费观看| 欧美日韩视频一区二区三区| 亚洲影视中文字幕| 美乳少妇欧美精品| 亚洲精一区二区三区| 国产精品久久77777| 久久精品国产清高在天天线| 欧美高清视频www夜色资源网| 亚洲伦理中文字幕| 国产精品网红福利| 另类天堂av| 亚洲欧美日韩中文播放| 欧美成人激情视频免费观看| 一区二区三区欧美亚洲| 国模精品娜娜一二三区| 欧美日韩亚洲一区二| 久久国产欧美精品| 亚洲精品综合精品自拍| 久久久久www| 亚洲一区一卡| 亚洲高清av| 国产婷婷色一区二区三区| 欧美女激情福利| 久久激情五月婷婷| 亚洲一区二区3| 亚洲欧洲精品一区二区| 久久久久国产精品厨房| 亚洲无限乱码一二三四麻| 一区在线观看| 国产欧美日韩综合一区在线播放| 欧美不卡高清| 久久噜噜噜精品国产亚洲综合| 一区二区久久久久| 亚洲国产成人精品久久久国产成人一区 | 欧美日韩视频不卡| 欧美成人免费全部观看天天性色| 欧美一级久久久| 一区二区三区三区在线| 欧美激情黄色片| 久久色在线观看| 久久爱www| 午夜亚洲激情| 亚洲一区在线看| 一区二区三区国产盗摄| 亚洲精品视频一区| 亚洲国内欧美| 在线观看福利一区| 影音先锋久久资源网| 国产欧美一区二区视频| 国产精品一级久久久| 国产精品成av人在线视午夜片| 欧美精品v国产精品v日韩精品| 久久夜色精品国产亚洲aⅴ| 久久狠狠久久综合桃花| 欧美在线观看你懂的| 久久不射2019中文字幕| 久久精品91久久久久久再现| 欧美一区二区女人| 久久精品五月婷婷| 久久久久九九九| 久热精品在线视频| 欧美激情一区二区三级高清视频| 久久夜色精品国产噜噜av| 久久综合色一综合色88| 久久综合狠狠| 欧美乱大交xxxxx| 国产精品ⅴa在线观看h| 国产精品女人毛片| 国产视频久久久久| 在线观看中文字幕不卡| 亚洲国产精品成人精品| 日韩小视频在线观看专区| 一本色道久久综合亚洲精品按摩 | 亚洲精品美女91| 亚洲免费观看视频| 亚洲女同同性videoxma| 久久久福利视频| 久久夜色精品国产噜噜av| 欧美激情中文字幕一区二区| 亚洲精品国产精品久久清纯直播| 亚洲精品乱码久久久久久蜜桃91 | 91久久黄色| 亚洲小视频在线| 欧美一区二区三区的| 你懂的一区二区| 国产精品99免费看| 激情视频一区二区| 一区二区三区四区蜜桃| 欧美一区二区三区在线视频| 毛片精品免费在线观看| 亚洲精品乱码久久久久久黑人| 亚洲欧美国产另类| 榴莲视频成人在线观看| 国产精品乱码人人做人人爱| 红桃视频亚洲| 亚洲综合日韩中文字幕v在线| 欧美一区激情视频在线观看| 欧美激情中文字幕乱码免费| 亚洲一区二区三区在线播放| 美腿丝袜亚洲色图| 国产精品亚洲一区二区三区在线| 亚洲第一色中文字幕| 性一交一乱一区二区洋洋av| 亚洲国产国产亚洲一二三| 亚洲欧美日韩综合| 欧美日韩p片| 在线欧美日韩国产| 欧美一二区视频| 一本大道久久精品懂色aⅴ| 久久午夜色播影院免费高清| 国产美女精品|