Template Funktionen
-
#include <iostream> using namespace std; template<typename T> bool kleiner(const T a){ return a > 20; } template<> bool kleiner<double>(const double a){ cout << "Aufruf double" << endl; return a > 20; } template<> bool kleiner<int>(const int a){ cout << "Aufruf Integer" << endl; return a > 20; } template<typename T> void ausgabe(const T& a){ cout << a << endl; } template<> void ausgabe<char>(const char& a){ cout << "Char" << endl; } template<> void ausgabe<int>(const int& a){ cout << "Int" << endl; } int main(){ double d = 20; int a = 1; kleiner(d); kleiner(a); system("Pause"); }Wieso kann ich nur 2 spezielle Template Funktionen verwenden?
-
Hä?
Was??

-
Wieso kann ich nur 2 spezielle Template Funktionen verwenden?
Du meinst wohl "Wieso kann ich Funktionstemplates nur zweimal spezialisieren".
Und das stimmt nicht, du kannst deine Funktionstemplates für jedes Template-Argument spezialisieren.
-
Du meinst wohl "Wieso kann ich Funktionstemplates nur zweimal spezialisieren".
Ja genau das meine ich.
Und das stimmt nicht, du kannst deine Funktionstemplates für jedes Template-Argument spezialisieren.
Jedesmal wenn ich versuche mehr als 2 Funktionstemplates zu spezialisieren erhalte ich eine fehlermeldung

-
Soll ich den Code erraten mit dem du es versuchst.. ?
Poste ihn mal, dann sehen wir weiter.
-
template<typename T> void ausgabe(const T& a){ cout << a << endl; } template<> void ausgabe<char>(const char& a){ cout << "Char" << endl; } template<> void ausgabe<int>(const int& a){ cout << "Int" << endl; } void ausgabe<double>(const double& a){ cout << "Double" << endl; }
-
Achso jetzt sehe ich den Fehler ich habe
template<>
vergessen vor zu schreiben
-
Du hast ein template<> vergessen.
Edit: Zu spaet.