#define-makroilla voidaan tehdä tyypistä riippumaton funktio. Makrojen huonot puolet on kuitenkin jo todettu. C++:ssa voidaan template -"tyyppimäärityksen" avulla generoida useita funktiota samalla "funktiomallilla":
/* TEMPFUN.CPP */
#include <stdio.h>
...
template <class T>
T max(T a,T b)
{
return a > b ? a : b;
}
template <class T>
void swap(T &a, T &b)
{
T t;
t = a; a = b; b = t;
}
int main(void)
{
int ia = 3 , ib = 5 ,ic = max(ia,ib);
double da = 3.1, db = 5.2 ,dc = max(da,db);
tulosta(ic); tulosta(dc);
swap(ia,ib); tulosta(ia); tulosta(ib);
swap(da,db); tulosta(da); tulosta(db);
return 0;
}
Käytännössä kääntäjä generoi uuden
tyyppejä vastaavan funktion (generoitu funktio
= template function),
kun funktiomallia kutsutaan uusilla "tuntemattomilla" parametreilla.