So far templates can only be used to classes:
class MyClass<Class T> {}
But to use templates to its full extend, it is necessary to have functions using their own templates. For example, to pass an instance of this class to a function as a parameter, this function must be overloaded for all possible classes individually.
void function(MyClass<int> m) {} void function(MyClass<float> m) {} ...