Member-Funktionspointer im Template
-
Hallo,
ich möchte eine Funktion schreiben, die einen Methodenpointer/Member-Funktionspointer als Template-Argument akzeptiert.Ich habe es so versucht, erfolglos:
template <class T, unsigned int(T::*SIZE)()> bool greater_than3(T i) {return i.SIZE > 3;}
-
template <class T, unsigned int(T::*SIZE)()> bool greater_than3(T i) {return (i.*SIZE)() > 3;}
-
http://www.newty.de/fpt/index.html
Oder mit C++ 11:
bool greater_than3(std::function<int()> f) { return f() > 3; }
-
Danke, SeppJ, so funktioniert es

@ drakon: Die Seite hab ich schon über Google gefunden, aber da wird es ja nur mit einem static Wrapper versucht, wenn ich das richtig sehe. Und dieser Umweg ist ziemlich blöd.
-
Wurstinator schrieb:
Danke, SeppJ, so funktioniert es

@ drakon: Die Seite hab ich schon über Google gefunden, aber da wird es ja nur mit einem static Wrapper versucht, wenn ich das richtig sehe. Und dieser Umweg ist ziemlich blöd.
std::function nutzt man gewöhnlicherweise mit std::bind, dh. da kann alles hin.
Hat aber nen Performance-Overhead, dh. wenn ein Funktionszeiger reicht, dann sollte man das auch so machen.