Funktionstemplates

Überladen von Template-Funktionen (1/2)

Template-Funktionen können nach den üblichen Regeln überladen werden. Das heißt es muß immer möglich sein eine Funktion eindeutig einem Aufruf zuzuordnen. Für die Eindeutigkeit genügt es, wenn oben erwähnter Algorithmus positiv terminiert.

Zu ersten sind Spezialisierungen zu nennen. Ein Aufruf unserer Maximumsfunktion macht für Strings keinen Sinn: Es würde nur der Pointerwert verglichen. Niemand hindert uns aber daran für Strings unabhängig vom Template eine eigene Funktion zu schreiben.

 
  #include <string.h>  
  inline char* max(char* a, char* b) { return strcmp(a, b) < = ? a : b; }  

Nach der Ersetzungsstrategie wird bei einem Aufruf mit zwei char-Pointern schon im ersten Schritt diese Funktion gefunden und aufgerufen.

Darüberhinaus können auch verschiedene Templatedefinitionen erklärt werden.