Template Specialization ช่วยให้เราสร้าง template ทั่วไปสำหรับทุกชนิดข้อมูล แล้วสร้างเวอร์ชันเฉพาะสำหรับชนิดข้อมูลบางชนิดได้
Function Template Specialization
template<typename T>
void my_function(T x) {
cout << "General: " << x << endl;
}
template<>
void my_function(char x) { // specialization สำหรับ char
cout << "Specialized for char: " << x << endl;
}
my_function(10); // General
my_function(25.36); // General
my_function('F'); // Specialized
my_function("Hello"); // General (const char*)
Class Template Specialization
template<typename T> class MyClass {
public: MyClass() { cout << "General class\n"; }
};
template<> class MyClass<char> { // specialization
public: MyClass() { cout << "Specialized for char\n"; }
};
MyClass<int> a; // General
MyClass<char> b; // Specialized
ผลลัพธ์
General: 10 General: 25.36 Specialized for char: F General: Hello