對於給定的函式名,可以有非模板函式、模板函式和顯示具體化模板函式以及它們的過載版本。
顯示具體化的原型和定義應以template<>開頭,並通過名稱來指出型別。
具體化將覆蓋常規模板,而非模板函式將覆蓋具體化和常規模板。
#include templatevoid swap(any& , any&);
struct job
;template<> void swap(job&, job&);
void show(job&);
int main()
; job sidney = ;
show(sue);
show(sidney);
swap(sue, sidney);
show(sue);
show(sidney);
system("pause");
return 0;
}template void swap(any& a, any& b)
template<> void swap(job& j1, job& j2)
void show(job& j)
這是第三代具體化,編譯器不一定支援。如果無法編譯通過,提示有多個可用例項,可以將
template<> void swap(job&, job&)替換成void swap(int&, int&)
C 模板顯示具體化
摘自c primer plus 中文第六版 如果不考慮向後相容的問題,並願意鍵入較長的單詞,宣告引數是應該使用typename而不是class。對於給定的函式名,可以有非模板函式,模板函式和顯示具體化模板函式集他們的過載 版本。顯示具體化的原型和定義應該以template 打頭 並通過名稱來指出型別...
例項化和具體化
primer plus在解釋具體化和例項化看的有點亂,分解出來備忘 在 中包含函式模板本身並不會生成函式定義,它只是用於生成函式定義的方案 編譯器使用模板為我寫型別生成函式定義時,得到的是模板例項 如這個模板 templatevoid swap t t1,t t2 呼叫int i 10,j 20 c...
C Primer Plus 例項化與具體化
template void swap t a,t b 函式模板 void main template void swap t a,t b template 函式模板 void swap t a,t b template void swap int int 使用swap模板顯示地生成int型別函式定義...