Funktionstemplates

Überladen von Template-Funktionen (2/2)

 
  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)

Nicht zulässig sind aber wegen Mehrdeutigkeiten unter anderem die folgenden Kombinationen (hier immer eine Minimalauswahl unzulässiger Funktionen):