【发布时间】:2010-03-29 15:57:16
【问题描述】:
我有一个函子 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;
}
我怎样才能让扣除起作用?
【问题讨论】:
-
请花时间学习输入代码块(大和内联)。只有在我编辑了您的问题之后,您才明显知道我在答案中提到的明确传递。
标签: c++ templates reference functor