Pasa una función como un parámetro de plantilla explícito

En el ejemplo de código de abajo, la llamada afoo funciona, mientras que la llamada abar falla

Si te comento la llamada abar, el código compila, que me dice la definición debar en sí está bien. Entonces, ¿cómobar ser llamado correctamente?

#include <iostream>

using namespace std;

int multiply(int x, int y)
{
    return x * y;
}

template <class F>
void foo(int x, int y, F f)
{
    cout << f(x, y) << endl;
}

template <class F>
void bar(int x, int y)
{
    cout << F(x, y) << endl;
}

int main()
{
    foo(3, 4, multiply); // works
    bar<multiply>(3, 4); // fails

    return 0;
}

Respuestas a la pregunta(2)

Su respuesta a la pregunta