讓後門能夠偏特化

2021-04-12 20:37:35 字數 658 閱讀 1579

讓後門函式能夠偏特化

struct cls

}; 對這個類cls的後門函式postern,我們只能對它進行全特化。現在的c++還不支援模板函式的偏特化。可是有的時個我們的擴充套件真的需要偏特化,所以得想點辦法來完成這個事情。辦法就是把這個後門函式的偏特化需求轉換為乙個類的偏特化。下面我們來完成這個過程。請看下面的這個類定義。

struct cls

private: //

乙個用來做測試用的私有成員函式

void fun(void)

// 內部巢狀的用來對後門函式偏特化的類

template

< typename t, typename u>

struct cpostern

}; };

這個cls類,有三個成員。 乙個後門函式postern, 乙個私有函式fun, 乙個巢狀類cpostern。現在的後門函式postern只完成一件事情:呼叫巢狀類cpostern中的pestern。通過這次呼叫,我們把偏特化工作由針對函式成功的轉向了針對類。現在我們只需偏特化巢狀類cpostern就行了。例如我們可以做如下的偏特化。

template

struct cls::cpostern< t, int>

}; 同樣,我們這次的偏特化沒有對原始的cls做一絲一毫的更改。

讓後門能夠偏特化

讓後門函式能夠偏特化 struct cls 對這個類cls的後門函式postern,我們只能對它進行全特化。現在的c 還不支援模板函式的偏特化。可是有的時個我們的擴充套件真的需要偏特化,所以得想點辦法來完成這個事情。辦法就是把這個後門函式的偏特化需求轉換為乙個類的偏特化。下面我們來完成這個過程。請看...

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

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

特化與偏特化

綜合stl 原始碼剖析中給出的兩種定義,可以如下定義 所謂偏特化的意思是提供另乙份更進一步條件的template定義式,其仍然是模板化的。舉乙個例子 templatestruct test 偏特化版本1 templatestruct test 偏特化版本2 templatestruct test t...