Templates in Modern C++
Templates are one of the outstanding features of C++. They become more and more important with each new C++ standard. Templates provide abstraction without an abstraction penalty. There are two kinds of templates: templates for classes, class template, or for functions, function template. Function templates are used to create concrete types of functions.
Class templates or function templates are families of classes or functions.
Templates play an important role in the development of generic libraries, Standard Template Library.