寻找这种模板专业化的官方名称和链接类型,我们专门设计一个模板,专门用于在类模板中实现单个方法。
template <class T>
class Foo
{
public:
void f()
{
// default method implementation
}
};
// What is the default linkage of this function (I'm guessing
// external based on basic function template specializations),
// and what am I doing called? (method specialization of a class
// template?)
template <>
void Foo<int>::f()
{
// method implementation for Foo<int>
}
答案 0 :(得分:2)
Foo<int> f1; f1.f(); //Use implementation for Foo<int>, i.e. the specialized one.
Foo<double> f2; f2.f(); //Use the default implementation.
本案例背后的术语称为Explicit Specialization。编译器将选择它可以找到的“最佳”匹配模板。确定“最佳”匹配模板的过程有点复杂。有关更多详细信息,请参阅“C ++模板:完整指南”一书。