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;
}