template spezialisierung
-
hola leute
ich hab folgende template-funktion
template<class T> inline void IOSBinaryWrite(std::ostream &out, const T &val) { ... }ist es nun moeglich, das ich die funktion auf einen std::vector<T> spezialisiere, wobei T noch nicht spezialisiert werden soll ?
und noch ne frage: wie kann ich bei nem template parameter drauf kommen, das er ein z.b. zeiger ist?
Meep Meep
-
Nicht spezialisieren, ueberladen!
#include <iostream> #include <vector> template<class T> void foo(T arg) { std::cout << "foo<T>" << std::endl; } template<class T> void foo(T* arg) { std::cout << "foo<T*>" << std::endl; } template<class T> void foo(std::vector<T> arg) { std::cout << "foo<vector<T> >" << std::endl; } int main() { foo(0); foo((void*)0); foo(std::vector<int>()); }
-
re
hab mich wohl beim zweiten punkt etwas missverstaendlich ausgedrueckt.
ich meinte is folgend:template<class T> inline void eine_funktion(T val) { // jetzt moechte ich ueberpruefen ob T ein zeiger ist oder nicht }Meep Meep
-
template<class T> bool isPointer(T) { return false; } template<class T> bool isPointer(T*) { return true; }
-
Oder auch:
template<class T> struct IsPointer { static const bool Value = false; }; template<class T> struct IsPointer<T*> { static const bool Value = true; };