模板的特化和偏特化

2021-09-26 19:13:55 字數 1256 閱讀 9517

函式模板特化

解決開發過程中由於要對特殊型別做特殊的處理, 不能直接使用函式模板,例如,當我們判斷兩個值是否相等的時候, 普通的變數和字串或者類的比較就需要單獨特化,來做相應的處理.

template bool isequal(t va1,t va2)

//特化

template <> //不需要新增型別模板, 省略或者加上空格即可

bool isequal(string& va1,string& va2)

//匹配時優先匹配特化函式

#include #include #include #include using namespace std;

class f

operator int() const

private:

int m_fz;

int m_fm;

};template struct hash

};template <>

struct hash

};templatevoid is(t v1)

類模板特化

全特化

將所有模板型別都進行特化

template class test

;//全特化

template <>

class test;

偏特化
對於模板的型別做一些限制

部分偏特化

//只對函式模板的一部分模板型別進行特化

template class test

;//部分偏特化

template //此處只寫未特化的型別

class test;

對型別的範圍的限制, 主要的型別基礎不變

template class test2

//對模板型別的範圍做出一定的限制

template //此處只需寫未進行特化的模板型別

class test2

test2t2;

模板模板引數
template class container

>

class xcls

//呼叫

template using lst = list>;

xclsmyls;

模板的特化(特化和偏特化)

模板特化可以分為全特化和偏特化 特化可以為類增加成員函式或成員變數 模板特化有三種型別,一是特化為絕對型別,二是特化為引用 指標型別,三是特化為另外乙個模板類 include include include usingnamespacestd template classt tmaxr tt1,tt...

特化和偏特化 特化和偏特化

分類 c 2010 03 17 18 27 560人閱讀 收藏 舉報 partial template specialization能夠讓你在模板 template 的所有可能的實體中特化出一組子集.1.模板的特化 template specialization 例如,定義如下的乙個模板 templ...

C 模板特化和偏特化

1.引言 c 中的模板分為類模板和函式模板,雖然它引進到c 標準中的時間不是很長,但是卻得到了廣泛的應用,這一點在stl中有著充分的體現。目前,stl在c 社群中得到了廣泛的關注 應用和研究。理解和掌握模板是學習 應用和研究以及擴充stl的基礎。而stl模板例項中又充斥著大量的模板特化和偏特化。2....