Templates
Contents
Template Specialization
Just as we had speicalization for function templates; we can have specialization for classes.File: special2.cpp
#include <iostream> #include <string> // Generic Template Class template <typename T> class MyContainer { public: void display(T value) { std::cout << "Generic container holding: " << value << std::endl; } }; // Full Specialization for 'char' template <> class MyContainer<char> { public: void display(char value) { std::cout << "Specialized container for char: '" << value << "'" << std::endl; } }; // Full Specialization for 'std::string' template <> class MyContainer<std::string> { public: void display(const std::string& value) { std::cout << "Specialized container for string: \"" << value << "\"" << std::endl; } }; int main() { MyContainer<int> intContainer; intContainer.display(123); // Uses generic template MyContainer<double> doubleContainer; doubleContainer.display(45.67); // Uses generic template MyContainer<char> charContainer; charContainer.display('Z'); // Uses 'char' specialization MyContainer<std::string> stringContainer; stringContainer.display("Hello World"); // Uses 'std::string' specialization return 0; }