Template Spezialisierung
-
Hi,
ich habe folgendes problem.
Ich habe eine klasse mit zwei Template-Parametern. Wenn ich beide spezialisiere schluckt das der Compiler ( 3 ). Ebenso, wenn ich keinen Parameter spezialisiere ( 2 ).Jetzt meine Frage: Geht es auch nur einen Parameter (hier T2) zu spezialisieren und den anderen allgemein zu halten? Wenn ja wie ist die Syntax. Müßte ja irgenwie aussehen wie in ( 1 ).
template<class T1, class T2> { struct test { void doo (T1 param1, T2 param2); } } //1 -> wie bekomme ich hier nur einen Parameter spezialisiert? template <typename T1> void test<T1 , bool>::doo(T1 type1, bool type2){} //2 template <typename T1, typename T2> void test<T1 , T2>::doo(T1 type1 , T2 type2){} //3 template <> void test<bool , bool>::doo(bool type1, bool type2){}Für Hilfe wäre ich dankbar, häng schon einige Tage an diesem Problem und finde keine Lösung.
bye
mss
-
Was du da spezialisierst ist nicht die Klasse sondern nur die Funktion doo.
Leider kann man Funktionen nicht partiell spezialisieren, dazu müsstest du dann wirklich die komplette Klasse spezialisieren:template<class T1> // { <--- die KLammern hier sind unnötig struct test<T1, bool> { void doo (T1 param1, bool param2); }; // <--- das Semikolon ist sehr wohl nötig // }