Template class example 2: class that must be specialized; compile-time polymorphism is a template class example.
Operating system(s) or programming environment(s)
Lubuntu 15.04 (vivid)
Qt Creator 3.1.1
- G++ 4.9.2
Libraries used:
STL: GNU ISO C++ Library, version
4.9.2
Qt project file: ./CppTemplateClassExample2/CppTemplateClassExample2.pro
#include <iostream> ///Template class template <class T> struct MyClass { MyClass(const T& x); }; ///Template class specifialized for int, definition in declaration template <> struct MyClass<int> { MyClass(const int& x) { std::cout << "int: " << x << '\n'; } }; ///Template class specifialized for int, definition seperate after declaration template <> struct MyClass<double> { MyClass(const double& x); }; MyClass<double>::MyClass(const double& x) { std::cout << "double: " << x << '\n'; } int main() { const MyClass<int> m(123); const MyClass<double> n(3.14); //Create a MyClass<bool> fails (correctly) with: //undefined reference to 'MyClass<bool>::MyClass(bool const&)' //const MyClass<bool> q(true); }


