Unser obiges Problem läßt sich auf verschiedene Weise lösen. Dabei haben alle Lösungsstrategien gewisse Probleme, die auch kurz aufgezeigt werden.
In unserem Beispiel hätten wir noch eine zusätzliche Funktions-Deklaration einbauen könen:
int max(int, int);
Damit hätte der Compiler eine Möglichkeit gehabt eine überladene Funktion gemäß der Auflösungsstrategie 3 zu finden und diese zu benutzen. Der letzte Aufruf wäre dann umgewandelt worden:
x = max(y, o); // max(int, int(short)) implizite Typeumwandlung
Eine Definition der Funktion ist nicht notwendig, da sie aus dem Template generiert werden kann (Trotzdem ist es keine klassische Template-Funktion). Nachteil ist, daß man wissen muß, welche impliziten Typumwandlungen durchgeführt werden sollte.