Oracle Solaris Studio 12.2:C++ 用户指南

6.6.4 部分专门化

在前一个示例中,模板是完全专用的。也就是说,模板定义了特定模板参数的实现。模板也可以部分专用,这意味着只有某些模板参数被指定,或者一个或多个参数被限定到某种类型。生成的部分专门化仍然是模板。例如,以下代码样本说明了主模板和该模板的完全专门化。


template<class T, class U> class A {...}; //primary template
template<> class A<int, double> {...};    //specialization

以下代码说明了主模板部分专门化的示例。


template<class U> class A<int> {...};          // Example 1
template<class T, class U> class A<T*> {...}; // Example 2
template<class T> class A<T**, char> {...};   // Example 3