Templates are the foundation of generic programming, which involves writing code in a way that is independent of any particular type.
A template is a blueprint or formula for creating a generic class or a function. The library containers like iterators and algorithms are examples of generic programming and have been developed using template concept.
There is a single definition of each container, such as vector, but we can define many different kinds of vectors for example, vector or vector .
You can use templates to define functions as well as classes, let us see how do they work:
The general form of a template function definition is shown here:
template ret-type func-name(parameter list)
// body of function
Here, type is a placeholder name for a data type used by the function. This name can be used within the function definition.
For Example: The following is the example of a function template that returns the maximum of two values:

using namespace std;

inline T const& Max (T const& a, T const& b) {
return a < b ? b:a;

int main () {

int i = 39;
int j = 20;
cout << “Max(i, j): ” << Max(i, j) << endl;

double f1 = 13.5;
double f2 = 20.7;
cout << “Max(f1, f2): ” << Max(f1, f2) << endl;

string s1 = “Hello”;
string s2 = “World”;
cout << “Max(s1, s2): ” << Max(s1, s2) << endl;

return 0;


Max(i, j): 39
Max(f1, f2): 20.7
Max(s1, s2): World