background image

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> >