Man kann ein Template für einen bestimmten Typ festlegen. Das nennt sich dann spezialisieren.
Das schöne an den spezialisierten Templates ist, das man sie sogar aus einer DLL exportieren kann.
Machen kann man das schnell:
|
C-/C++-Quelltext
|
1
2
3
4
|
template<> void foo([T] var)
{
// mache was
}
|
Das "T" wird dann einfach durch den jeweiligen Typ ersetzt.
Durch die Spezialisierung kann man das verhalten eines Templates an einen Typ anpassen. Z.B. für eine Funktion equal. Zwei variablen mit einander zu vergleich ist np. Dumm wird es nur wenn beide Typen ein char* sind. Dafür kann man dann einen spezielle Version der equal Funktion erstellen, die dann wircklich einen Stringvergleich durchführt.
Was mich schon ne weile intressiert wozu ich aber noch nix gefunden habe: Wo ist bei templates der Unterschied zwischen blabla <class T> und <typename T> ??
Einen echten Unterschied gibt es nicht. Der Größte ist das bei typename mehr zu schreiben ist. Bei spezifizieren einen Template Typ.