template <class T> // #1 inline T f(T a, T b) { ... }template <class T1, class T2> // #2 inline T1 f(T1 a, T2 b) { ... }
template <class T> // #3 inline T* f(T* a, T b) { ... }
template <class T> // #4 inline T f(T a, T* b) { ... }
template <class T> // #5 inline T f(T* a, T b) { ... }
template <class T> // #6 inline T f(T a, T b, int c) { ... }
Zulaßsig sind z.B. folgende Kombinationen (also Maximalauswahl zulässiger Funktionen)
(#1, #3, #4, #6), (#2, #6), (#1, #4, #5, #6)
Nicht zulässig sind aber wegen Mehrdeutigkeiten unter anderem die folgenden Kombinationen (hier immer eine Minimalauswahl unzulässiger Funktionen):
(#1, #2), (#3, #5), (#2, #3), (#2, #4), (#2, #5)