// 主模板
template <typename T, typename U>
class MyClass {
public:
void print() {
std::cout << "匹配主模板\n";
}
};
// 部分特化:U = int
template <typename T>
class MyClass<T, int> {
public:
void print() {
std::cout << "匹配偏特化模板\n";
}
};
// 完全特化:T = int, U = double
template <>
class MyClass<int, double> {
public:
void print() {
std::cout << "匹配全特化模板\n";
}
};
int main() {
MyClass<double, double> obj1; // 匹配主模板
obj1.print(); // 输出: Primary template
MyClass<double, int> obj2; // 匹配部分特化 U = int
obj2.print(); // 输出: Partial specialization for U = int
MyClass<int, double> obj3; // 匹配完全特化 T = int, U = double
obj3.print(); // 输出: Full specialization for T = int, U = double
return 0;
}
输出:
匹配主模板
匹配偏特化模板
匹配全特化模板
总结:完全特化优先于部分特化,部分特化优先于主模板