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:
- 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.
- 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)
- Nach den üblichen Regeln wiird versucht eine überladene Funktion zu
finden. Sofern si existent ist, wird sie aufgerufen.