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

萬星星@豌豆莢 歡迎加入我們
一個吃軟飯的男人!!!!!我只想寫程序####
微博:http://weibo.com/wanlianwen
posts - 172,  comments - 1253,  trackbacks - 0

研究Boost前,想深入了解一下模板技術,找來一本書《C++ Template:The Complete Guide》研究。
里面有這樣一個小技巧,判斷一個類中是否有某種類形。下面是代碼:(Win 2K+ VS2003)

#include? < iostream >

// ?返回類型,大小分別為1、2
typedef? char ?RT1;
typedef?
struct
{
????
char ?a[ 2 ];
}
?RT2;

// ?選擇這個版本將返回char,大小為1
template < typename?T > ?RT1?test(typename?T::X? const * )
{
????
int ????dumy???? = ? 0 ;
????dumy
++ ;
}


// ?選擇這個版本將返回char,大小為2
template < typename?T > ?RT2?test()
{
????
int ????dumy???? = ? 0 ;
????dumy
++ ;
}


// ?依靠編譯器自動選擇test函數,然后依據返回類型判斷是否含有X
template < typename?T >
bool ?type_has_member_type_X()
{
????
return ?( sizeof (test < T > ( 0 ))? == ? 1 );
}


// ?有X類型的類
class ?HasX
{
public :
????
class ?X
????
{
????}
;
}
;

// ?無X類型的類
class ?NonX
{
public :
????
class ?Y
????
{
????}
;
}
;

int ?_tmain( int ?argc,?_TCHAR * ?argv[])
{
????
// ?編譯器選擇重載函數策略:選擇類型最匹配版本
????
// ?傾向于把0轉化為常量空指針,所以選擇返回為RT1版本
???? if (type_has_member_type_X < HasX > ())
????
{
????????std::cout?
<< ? " Has?X " ? << ?std::endl;
????}

????
else
????
{
????????std::cout?
<< ? " Non?X " ? << ?std::endl;
????}


????
// ?沒有T::X,所以選擇返回為RT2版本
???? if (type_has_member_type_X < NonX > ())
????
{
????????std::cout?
<< ? " Has?X " ? << ?std::endl;
????}

????
else
????
{
????????std::cout?
<< ? " Non?X " ? << ?std::endl;
????}

????
return ? 0 ;
}
輸出結果:
Has X
Non X
posted on 2006-04-05 22:26 萬連文 閱讀(1564) 評論(3)  編輯 收藏 引用 所屬分類: 模板

FeedBack:
# re: 一個模板巧妙技術,語法技巧
2006-04-06 00:23 | dicklee
有個瑕疵,X若為引用類型則會返回不期望的值,例如:
class HasX
{
public:
typedef int& X;
};
type_has_member_type_X < HasX >()
將返回false,類型和特征萃取時,引用類型總是比較麻煩,呵呵  回復  更多評論
  
# re: 一個模板巧妙技術,語法技巧
2006-04-06 13:52 | 萬連文
@dicklee
不錯,看來上面對模板了解深啊,現在才發現自己對編譯器了解甚少!  回復  更多評論
  
# re: 一個模板巧妙技術,語法技巧
2007-08-28 09:49 | 100000
typedef char RT1;
typedef struct
{
char a[ 2 ];
} RT2;

template < typename T >
class NonRef{

public:

typedef T NonRefX;

};

template < typename T >
class NonRef< T& >{

public:

typedef T NonRefX;

};

// 選擇這個版本將返回char,大小為1
template < typename T > RT1 test( typename NonRef< typename T::X >::NonRefX const * )
{
int dumy = 0 ;
dumy ++ ;
}


// 選擇這個版本將返回char,大小為2
template < typename T > RT2 test(...)
{
int dumy = 0 ;
dumy ++ ;
}

// 依靠編譯器自動選擇test函數,然后依據返回類型判斷是否含有X
template < typename T >
bool type_has_member_type_X()
{
return ( sizeof (test < T > ( 0 )) == 1 );
}

// 有X類型的類
class HasX
{
public :

typedef int& X;

} ;

// 無X類型的類
class NonX
{
public :
class Y
{
} ;
} ;


int _tmain(int argc, _TCHAR* argv[])
{
// 編譯器選擇重載函數策略:選擇類型最匹配版本
// 傾向于把0轉化為常量空指針,所以選擇返回為RT1版本

if (type_has_member_type_X < HasX > ())
{
std::cout << " Has X " << std::endl;
}
else
{
std::cout << " Non X " << std::endl;
}

// 沒有T::X,所以選擇返回為RT2版本
if (type_has_member_type_X < NonX > ())
{
std::cout << " Has X " << std::endl;
}
else
{
std::cout << " Non X " << std::endl;
}


return 0;
}
  回復  更多評論
  
簡歷下載
聯系我

<2007年9月>
2627282930311
2345678
9101112131415
16171819202122
23242526272829
30123456

常用鏈接

留言簿(66)

隨筆分類

隨筆檔案

相冊

搜索

  •  

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            亚洲最黄网站| 激情五月综合色婷婷一区二区| 99精品国产在热久久| 亚洲精品1区2区| 久久嫩草精品久久久精品| 欧美专区第一页| 久久综合久久综合久久| 久久免费视频这里只有精品| 久久精品视频免费播放| 免费国产一区二区| 亚洲国产美女| 亚洲综合色在线| 久久久欧美一区二区| 欧美精品日韩| 国产精品影片在线观看| 在线日韩一区二区| 这里是久久伊人| 欧美在线高清视频| 免费看成人av| 亚洲一级黄色片| 老色鬼精品视频在线观看播放| 欧美日韩视频专区在线播放| 国产欧美三级| 一本一本a久久| 久久久综合网| 99riav1国产精品视频| 久久www成人_看片免费不卡| 欧美人与性动交α欧美精品济南到 | 欧美在线影院在线视频| 久久资源在线| 国产精品美女久久久久aⅴ国产馆| 合欧美一区二区三区| 日韩亚洲欧美一区二区三区| 久久精品一区二区三区不卡| 日韩视频在线免费观看| 麻豆精品网站| 国产精品久久久久久久久婷婷| 亚洲国内精品| 蜜臀91精品一区二区三区| 午夜国产精品影院在线观看| 欧美日韩国产一级片| 有坂深雪在线一区| 久久精品日韩欧美| 性感少妇一区| 国产精品高潮呻吟久久av黑人| 国产午夜精品理论片a级大结局 | 午夜精品亚洲| 欧美日精品一区视频| 亚洲大片精品永久免费| 久久久久久久久伊人| 亚洲一卡二卡三卡四卡五卡| 欧美日韩免费观看一区=区三区| 影音欧美亚洲| 麻豆成人在线| 久久综合久久88| 在线激情影院一区| 理论片一区二区在线| 久久久激情视频| 一区二区三区在线观看视频| 久久久免费观看视频| 欧美在线啊v| 精品成人一区二区三区四区| 免费欧美日韩国产三级电影| 久久亚洲欧美| 最新国产乱人伦偷精品免费网站| 欧美电影电视剧在线观看| 六月婷婷一区| 99精品国产高清一区二区| 亚洲免费av网站| 国产精品另类一区| 欧美淫片网站| 久久九九热免费视频| 亚洲国产91| 亚洲日本欧美天堂| 欧美日韩亚洲网| 亚洲欧美中日韩| 性色av一区二区三区| 国内综合精品午夜久久资源| 欧美岛国在线观看| 欧美色网在线| 久久乐国产精品| 欧美激情精品久久久久久| 亚洲伊人网站| 久久久久久久一区二区三区| 亚洲美女中文字幕| 亚洲在线成人精品| 尤物精品在线| 宅男精品导航| 亚洲国产成人av在线| 日韩午夜三级在线| 韩日欧美一区二区| 日韩视频一区二区三区在线播放免费观看 | 久久免费黄色| 亚洲婷婷国产精品电影人久久| 亚洲在线播放电影| 亚洲黄色毛片| 午夜在线一区二区| 夜夜精品视频一区二区| 久久久久**毛片大全| 老司机一区二区| 亚洲一区二区三区免费在线观看| 久久gogo国模裸体人体| 一本久久综合亚洲鲁鲁| 欧美一区二区三区在线视频| 99综合在线| 久久精品一区二区国产| 亚洲一区二区视频| 欧美国产专区| 欧美www视频在线观看| 国产精品视频观看| 亚洲精品久久久久久久久久久久| 好看不卡的中文字幕| 亚洲欧美国产一区二区三区| 亚洲少妇在线| 欧美激情一区二区三区在线视频观看| 久久aⅴ国产欧美74aaa| 欧美午夜激情视频| 亚洲精品美女久久7777777| 亚洲国产精品久久久久秋霞蜜臀 | 欧美v日韩v国产v| 久久国产加勒比精品无码| 欧美日韩一区综合| 亚洲国产精品第一区二区三区| 国内精品久久久久国产盗摄免费观看完整版 | 国产亚洲视频在线| 亚洲视频免费在线| 日韩午夜av电影| 欧美激情免费在线| 欧美国产免费| 91久久夜色精品国产九色| 久久久精彩视频| 久久久亚洲一区| 精品二区久久| 久久综合色8888| 欧美成人网在线| 亚洲国产精品第一区二区三区| 久久久久九九九九| 麻豆精品一区二区综合av| 在线精品国精品国产尤物884a| 久久久噜噜噜久久| 欧美sm视频| 亚洲欧洲视频| 欧美日韩亚洲综合在线| 夜夜夜久久久| 欧美专区在线播放| 国产午夜精品视频免费不卡69堂| 性久久久久久久久| 老司机成人网| 亚洲久久视频| 国产精品五月天| 久久久久久尹人网香蕉| 亚洲第一中文字幕在线观看| 一本色道久久综合精品竹菊| 欧美日韩综合视频网址| 亚洲女人天堂成人av在线| 裸体女人亚洲精品一区| 亚洲人成网站色ww在线| 欧美日韩一区二区视频在线| 亚洲主播在线| 欧美福利视频在线| 亚洲图片自拍偷拍| 国产日韩欧美高清| 久久久久久午夜| 欧美日精品一区视频| 亚洲欧美久久久久一区二区三区| 久久久久久国产精品mv| 亚洲精品永久免费| 国产精品国色综合久久| 久久久久久久国产| 日韩视频精品| 久久综合国产精品| 亚洲视频免费观看| 黄色亚洲精品| 国产精品久久影院| 欧美 日韩 国产 一区| 亚洲无限乱码一二三四麻| 欧美a级一区二区| 欧美在线二区| 中文在线资源观看网站视频免费不卡 | 一区二区三区在线免费播放| 女生裸体视频一区二区三区| 亚洲欧美日本在线| 亚洲精品一区二区在线观看| 久久一二三国产| 午夜精品福利一区二区三区av| 亚洲黄色片网站| 国内精品视频久久| 国产精品黄色在线观看| 欧美成人精品福利| 久久久久久久欧美精品| 午夜精品久久| 国产精品99久久久久久久女警| 欧美成人免费全部| 久久九九全国免费精品观看| 亚洲伊人一本大道中文字幕| 亚洲精品孕妇| 亚洲激情在线观看视频免费| 红桃视频一区| 国产主播一区二区三区四区| 国产精品美女久久久|