Тип вывода, при использовании указателя на функцию-член в качестве аргумента шаблона
Когда я хочу иметь функцию-член в качестве аргумента шаблона, есть ли способ ее храмовать, не предоставляяCaller
тип?
<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>
когда я пытаюсь
<code>template <void (Caller::*Func)(int), typename Caller> void call(Caller * c) { (c->*Func)(6); } </code>
и называть это как
<code>f.call<&Bar::printNumber>(this); </code>
я получаюCaller is not class...
ошибка.
Итак, есть ли способ позволить компилятору определять тип Caller?