Тип вывода, при использовании указателя на функцию-член в качестве аргумента шаблона

Когда я хочу иметь функцию-член в качестве аргумента шаблона, есть ли способ ее храмовать, не предоставляя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?

Ответы на вопрос(1)

Ваш ответ на вопрос