There are three kinds of template parameters: template type parameters, non-type template parameters, and template template parameters. The const char* class specialization of the Grid class template is called a full class template specialization because it specializes the Grid template for every template parameter. The C++ standard does not permit partial template specialization of function templates. Templates in C++ provide capabilities that go far beyond the simple class and function templates. One of these capabilities is template recursion. Template recursion is similar to function recursion, in which a function is defined in terms of calling itself with a slightly easier version of the problem. The chapter first provides a motivation for template recursion and then shows how to implement it. Variadic templates can take a variable number of template parameters. The chapter also touches on template metaprogramming.