在C++中,模板特化是除了类以外的一种封装变化的方法。模板特化能够经过编译器来对不一样的模板参数生成不一样的代码。编程
模板特化一般以模板结构体做为载体。经常使用技法包括:类型定义、静态成员常量定义和静态成员函数定义。函数
从不一样的角度来看待模板特化,模板特化能够扮演如下角色:递归
1、函数接口
模板结构体能够被看作一种函数,其参数必须是明确的类型、整数或者变长参数。变长参数展开甚至能够递归。编译器
2、分支编译
模板结构体能够实现判断模板参数的类型来完成不一样的工做。在编程的时候,若是碰到相似“若是类型是A时进行a操做,若是类型是B进行b操做”的状况,说明能够使用模板特化了。模板
3、多态方法
模板特化能够实现对外统一的接口。但是内部实现却根据不一样的模板参数有不一样的实现。工作