// template specialization #include using namespace std; // class template: template class mycontainer { private: T element; public: // only prototype mycontainer (T); T increase (); }; // class method definition template mycontainer :: mycontainer(T arg) { element = arg; } template T mycontainer :: increase () { return ++element; } // class template specialization: template <> class mycontainer { // specialized for char type private: char element; public: mycontainer(char arg) { element = arg; } char uppercase() { if ((element >= 'a') && (element <= 'z')) { element += 'A'-'a'; return element; } return '0'; } }; /* // class method definition template <> mycontainer :: mycontainer(char arg) { element = arg; } template <> char mycontainer :: uppercase () { if ((element >= 'a') && (element <= 'z')) { element += 'A'-'a'; return element; } } */ // int main () { mycontainer myint (7); mycontainer mychar ('j'); // cout << myint.increase() << endl; cout << mychar.uppercase() << endl; // return 0; }