Typ bei Template Member-Funktion explizit angeben [Visual C++ 6]
-
Wie kann man denn beim Visual C++ 6 Compiler den Typ bei einer Template Member-Funktion explizit angeben? Auf allen anderen Compilern die ich getestet habe funktioniert das so:
class Example { public: template<class T> void foo() { } }; int main() { Example example; example.foo<int>(); }
Auf dem Visual C++ 6 Compiler leider nicht. Oder ist das mit diesem Compiler unmöglich?
-
Eckard schrieb:
Wie kann man denn beim Visual C++ 6 Compiler den Typ bei einer Template Member-Funktion explizit angeben?[...]
Oder ist das mit diesem Compiler unmöglich?Das ist in der Tat nicht möglich. Ein möglicher Workaround:
template <class T> struct Type2Type {}; class Example { public: template<class T> void foo(Type2Type<T>) { } }; int main() { Example example; example.foo(Type2Type<int>()); }
Da dies ziemlich hässlich ist, kann man zusätzlich noch eine non-member Wrapperfunktion schreiben:
... template <class T> void example_foo(Example& e, T* = 0) { e.foo(Type2Type<T>()); } int main() { Example example; example_foo<int>(example); }