...

/

Defining Class Templates

Defining Class Templates

Explore the use of class templates with incomplete types and the struct keyword.

Class templates are declared in a very similar manner as function templates, with the template keyword and the template parameter list preceding the class declaration. We saw the first example in the introductory section. 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;
};
Defining a class template

As long as the class template is not used anywhere in our 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 ...