Funcţii template

Am văzut deja că putem scrie funcţii cu acelaşi nume, dar cu parametri diferiţi. Dacă, indiferent de tipul acestora, corpul funcţiilor rămâne neschimbat, putem defini, pentru a restrânge codul, o funcţie template, folosind un tip generic. Acest tip poate fi scris în declararea template-ului, folosind fie cuvântul cheie class, fie typename. Utilizarea sa, în scrierea funcţiei, va fi, ulterior, făcută ca pentru orice alt tip. Să analizăm exemplul: int suma(int a, int b) { return a+b; } float suma(float a, float b) { return a+b; } Cum corpul funcţiilor mai sus definite este identic, putem modela exemplu prin crearea unei funcţii template. template  T suma(T a, Tb) { return a+b; } Tipul T, declarat în template, poate fi folosit atât pentru tipul parametrilor, tipul funcţiei, cât şi pentru declararea de variabile locale.

Instanţierea unei funcţii template revine la aplicarea ei pe un tip anume, după o sintaxă de forma:

nume_funcţie (argumente funcţie).

Pentru exemplul de mai sus, template-ul poate fi folosit astfel: int a=5, b=8, c; c=sum (a,b); float x=6.7, y=5.6, z; z=sum (x,y);