Home C++ Introduction Decisions Loops Input/Output Functions Stack and Heap References Arrays Searching and Sorting Pointers Character and Strings Structures Classes Inheritance Exceptions Templatess Recursion STL Modern C++ Misc Books ----

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;
}