在C++中,模板特化是除了類以外的一種封裝變化的方法。模板特化能夠經過編譯器來對不一樣的模板參數生成不一樣的代碼。編程
模板特化一般以模板結構體做爲載體。經常使用技法包括:類型定義、靜態成員常量定義和靜態成員函數定義。函數
從不一樣的角度來看待模板特化,模板特化能夠扮演如下角色:遞歸
1、函數接口
模板結構體能夠被看作一種函數,其參數必須是明確的類型、整數或者變長參數。變長參數展開甚至能夠遞歸。編譯器
2、分支編譯
模板結構體能夠實現判斷模板參數的類型來完成不一樣的工做。在編程的時候,若是碰到相似「若是類型是A時進行a操做,若是類型是B進行b操做」的狀況,說明能夠使用模板特化了。模板
3、多態方法
模板特化能夠實現對外統一的接口。但是內部實現卻根據不一樣的模板參數有不一樣的實現。工作