Typ herabsetzen, wenn der Zeiger der Elementfunktion als Vorlagenargument verwendet wird
Wenn ich möchte, dass das Element als Vorlagenargument fungiert, gibt es eine Möglichkeit, es ohne Angabe von Gründen zu schablonierenCaller
Art?
<code>struct Foo { template <typename Caller, void (Caller::*Func)(int)> void call(Caller * c) { (c->*Func)(6); } }; struct Bar { void start() { Foo f; f.call<Bar, &Bar::printNumber>(this); ^^^^ } void printNumber(int i) { std::cout << i; } }; int main () { Bar b; b.start(); return 0; } </code>
wenn ich es versuche
<code>template <void (Caller::*Func)(int), typename Caller> void call(Caller * c) { (c->*Func)(6); } </code>
und nenne es wie
<code>f.call<&Bar::printNumber>(this); </code>
ich bekommeCaller is not class...
Error.
Gibt es eine Möglichkeit, den Compiler den Caller-Typ ableiten zu lassen?