6.2 Funktionstemplates
  • Nach dem Templatekopf folgt die normale Funktionsdeklaration/Definition.
  • Üblicherweise für generische Algorithmen genutzt.
  • Beispiel:

        template <typename X> void swap (X& a, X& b) {
             X hilf=a;
             a=b; b=h;
        }
  • Die Signatur der Funktion besteht aus dem Namen "swap" und zwei gleichen Datentypen.
  • Beim Aufruf swap(wert 1, wert2) schaut der Compiler, von welchem Typ wert1 und wert2 ist und erzeugt die entsprechende Templatefunktionen (aus einem Funktionstemplate generierte Funktion).

             int i1, i2;             swap ( i1, i2);       // integer
             double d1, d2;     swap (d1, d2);      // double
             Klasse k1, k2;     swap (k1, k2);       // Klasse
  • Es muss beachtet werden, dass die Datentypen alle erforderlichen Eigenschaften besitzen (im Beispiel: Zuweisungsoperator, Rückgabeoperator).
  • Funktionstemplates müssen beim Aufruf (Signatur) einen Rückschluss auf den Templatedatentyp erlauben.