我有一个函子 f,它接受一个函数 func 和一个与 func 类型相同的参数 t。由于编译错误(没有匹配的调用函数),我无法将 g 传递给 f f(int&, void (&)(int&))
。如果 g 将采用非引用参数 g(int s),则编译完成。或者如果我手动指定模板参数f<int&>(i, g)
,编译也会完成。
template<typename T>
void f(T t, void (*func)(T)) {}
void g(int& s) {}
int main(int, char*[])
{
int i = 7;
f(i, g); // compilation error here
return 0;
}
我怎样才能得到扣除工作?