Funktionstemplates

Auswahl einer Funktion bei überladenen Funktions-Templates

Da keine implizite Typunmwandlung durchgeführt wird, versucht der Compiler Aufrufe nach einer festgelegten Strategie aufzu"losen:

  1. Der Compiler sucht nach einer existenten Funktion, die in den Parametern exakt übereinstimmt. (Der sogenannte exact match ist nicht ganz trivial definiert. Es genügt hier aber für uns zu wissen, daß die Parameter denselben Typ haben müssen. Dabei sind triviale Umwandlungen wie z.B. T nach T& oder T* nach T[] immer möglich). Existieren mehrere derartige Funktionen wird eine Fehlermeldung wegen Mehrdeutigkeit ausgegeben.
  2. Der Compiler sucht nach einem Funktions-Template, daß die entsprechende Funktion mit einer exact match-Argumentliste erzeugen kann. Diese wird gegebenenfalls erzeugt. (Auch hier wird bei Mehrdeutigkeiten ein Fehler ausgegeben)
  3. Nach den üblichen Regeln wiird versucht eine überladene Funktion zu finden. Sofern si existent ist, wird sie aufgerufen.