- 论坛徽章:
- 0
|
#include <iostream>
using namespace std;
// 通用版本
template<typename T1, typename T2>
class Dual {
public:
static void printType (void) {
cout << "Dual<T1,T2>" << endl;
}
};
// 针对第二个类型参数取short的局部特化版本
template<typename T>
class Dual<T, short> {
public:
static void printType (void) {
cout << "Dual<T,short>" << endl;
}
};
// 针对两个类型参数取相同类型的局部特化版本
template<typename T>
class Dual<T, T> {
public:
static void printType (void) {
cout << "Dual<T,T>" << endl;
}
};
// 针对两个类型参数取某种类型的指针的局部特化
// 版本
template<typename T1, typename T2>
class Dual<T1*, T2*> {
public:
static void printType (void) {
cout << "Dual<T1*,T2*>" << endl;
}
};
// 针对两个类型参数取相同类型指针的局部特化
// 版本
template<typename T>
class Dual<T*, T*> {
public:
static void printType (void) {
cout << "Dual<T*,T*>" << endl;
}
};
// 针对两个类型参数取某种类型数组的局部特化
// 版本
template<typename T1, typename T2>
class Dual<T1[], T2[]> {
public:
static void printType (void) {
cout << "Dual<T1[],T2[]>" << endl;
}
};
int main (void) {
Dual<int, char>::printType ();
Dual<int, short>::printType ();
Dual<int, int>::printType ();
Dual<int*, char*>::printType ();
Dual<int*, int*>::printType ();
Dual<int[], char[]>::printType ();
return 0;
}
你说的是不是这样的,这是类模板里面对 类模板的局部特化,效果和函数的重载差不多,但不知道是不是重载,重载的定义是在同一作用域,有相同的函数名,和不同的型参 看着有点向重载。。。。。 |
|