C++ 中的模板特化是指为模板提供针对特定类型或特定条件的定制化实现。这些特化版本会覆盖模板的通用实现,使得在特定情况下可以使用更特定的实现。模板特化分为完全特化(Full Specialization)和部分特化(Partial Specialization)两种形式。
注:部分模板特化是C++模板的高级功能之一,尽管它在C++标准中是合法的,但并非所有编译器都能完全支持它。
#include <iostream>// 定义一个通用的函数模板
template <typename T, typename U>
void printTypes() {std::cout << "Generic template function" << std::endl;
}// 完全特化:针对 <int, double> 类型的特化版本
template <>
void printTypes<int, double>() {std::cout << "Specialized version for <int, double>" << std::endl;
}/*
// 部分特化:针对 <T*, U> 类型的特化版本
template <typename T, typename U>
void printTypes<T*, U>() {std::cout << "Partial specialization for <T*, U>" << std::endl;
}*/int main() {// 调用通用函数模板printTypes<int, int>(); // 调用通用版本printTypes<int, double>(); // 调用特化版本//printTypes<int*, double>(); // 调用部分特化版本return 0;
}