C++ supports templates to implement generic programming. Templates allow generating a family of classes or functions to handle different data types. A class created from a class template is called a template class. The process of creating a template class is known as instantiation. Like other functions, template functions can be overloaded. Non-type parameters can also be used as arguments for templates.