Just as a function parameterizes values, templates parameterize types . Types include primitives such as int as well as user-defined classes. Class Templates Class templates define a class where some types, return types of methods or parameters to those methods are specified as parameters for client code to instantiate. Class templates are suited for container objects. The following discussion uses the Grid class shown in Professional C++ . All the following examples are from Professional C++ as well. Defining a class template A generic game board can be envisioned which stores chess pieces, checkers pieces, tic-tac-toe pieces or any other 2D game board pieces. Without templates, the approach to take would be polymorphism. GamePiece is the base class and ChessPiece would derive from it. To copy a GameBoard , one has to be able to copy GamePiece s. A pure virtual clone met...