《STL源码剖析》第三章讲迭代器时有讲模板特化相关。
C++模板包含类模板与模板函数:
template <class T>
class Template_Class
{
//成员函数等
T Data;
}; //类模板
template <class T>
T Template_func(const T a, const T b)
{
//do_sth();
} //模板函数
有时候,需要接受原生指针类型,上述模板却不可以,所以必须提供一个特化版本。
特化分为偏特化与全特化:
类模板拥有一个以上的template参数,可以针对数个或全部参数进行特化。
另一种情况是,模板只有一个类型,但指针、引用、指向成员的指针或函数指针类型特化。即更进一步的条件限制。偏特化后仍然是模板。
如上述类模板:
template <class T>
class Template_Class<T*>
{
//成员函数等
}; //偏特化Partial specialization, still a template
详细参考:https://blog.csdn.net/zhang810413/article/details/1948603