V 7.1 -> templates
-
Hi!
Bevor ihr mich nun haut: Ich hab es NICHT im MFC gepostet das es mit der MFC nix zu tun hat und nach Standard gehen sollte.
struct myTest { template <class T,class U> T * Create(const U & arg,T) { return new T(arg); } template <class U> int * Create<int,U>(const U & arg,int) { return new int(arg); } };
Beim zweiten Template wollte ich eine Spezialisierung für int schreiben. Der VC 7.1 quittiert das aber mit einer Fehlermeldung. Die Behebung der Fehlermeldung verlangt ein template <> vor der Funktion. Das kann der Compiler aber nicht haben, da U ja weiterhin ein templatepara sein muß.
Frage: Gibt es einen anderen weg das obrige zu erreichen ?
Ist das nach Standard überhaupt erlaubt was ich da treibe ?
-
AFAIK funktioniert partielle Spezialisierung nur bei Klassentemplates.
-
Hm, im Buch Modern C++ Design wird das so vorgestellt um ein Überladen einer Methode zu erreichen (jo der ausdruck spezialisierung war wohl falsch O
).
Die Crate Methode muß einmal alles schlucken und einmal speziell für ein anderes Objekt angepasst werden.
[ Dieser Beitrag wurde am 05.07.2003 um 11:52 Uhr von Knuddlbaer editiert. ]
struct myTest { template <class T,class U> T * Create(const U & arg,T) { return new T(arg); } template <class U> int * Create(const U & arg,int) { return new int(arg); } };
War das gesuchte....
thx @ll
[ Dieser Beitrag wurde am 05.07.2003 um 15:41 Uhr von Knuddlbaer editiert. ]