Defining class templates
Class templates are declared in a very similar manner, with the template
keyword and the template parameter list preceding the class declaration. We saw the first example in the introductory chapter. The next snippet shows a class template called wrapper
. It has a single template parameter, a type called T
, that is used as the type for data members, parameters, and function return types:
template <typename T> class wrapper { public: wrapper(T const v): value(v) { } T const& get() const { return value; } private: T value; };
As long as the class template is not used anywhere in your source code, the compiler will not generate code from it. For that to happen, the class template must be instantiated and all its parameters properly matched to arguments either explicitly, by the user, or implicitly, by the compiler. Examples for instantiating this class template are shown next...