C++类模板的三种特化类型
说起 C++
的模板及模板特化, 相信很多人都很熟悉 ,但是说到模板特化的几种类型,相
信了解的人就不是很多。我这里归纳了针对一个模板参数的类模板特化的几种类型, 一
是特化为绝对类型; 二是特化为引用,指针类型;三是特化为另外一个类模板。
这里用一个简单的例子来说明这三种情况:
// general version
template<class T>
class Compare
{
这就把 IsEqual 的参数限定为一种 vector
类型, 但具体是 vector<int>还是
vector<float>,
我们可以不关心, 因为对于这两种类型,我们的处理方式是一样的,
我们可以把这种方式称为"半特化".
当然, 我们可以将其"半特化"为任何我们自定义的模板类类型:
// specialize for any template class type
template <class T1>
struct SpecializedType
{
T1 x1;
T1 x2;
};
template <class T>
class Compare<SpecializedType<T> >