这里以类模板为例,函数模板可以类比。
其实实例化(instantiation)和具体化(specialization)这两个东西应该分开来谈,实例化的是对象,而具体化的是模板(类似于声明)。
template <typename T1, typename T2> class Pair
{
...
};
Pair<string, string> ii; //implicit instantiation 隐式
实例化对象
template class Pair<int, double>; //explicit instantiation 显式
实例化对象
template <> class Pair<const char *, int> //explicit specialization 显式
具体化模板
{
...
};
template <typename T1> class Pair<typename T1, int> //partial specialization 部分
具体化模板
{
...
};
- Instantiation</