基本上,我希望能够将带有任何参数的function_A传递给T_function,以便T_function可以执行一些命令,然后调用传入的函数
这就是我提出的(这可能会使我的目标更加明确):
template <typename t_return, typename t_param>
void foo(t_return (*func)(t_param), t_param p)
{
//do code
func(p);
}
foo<void, int>(&someFunc, someInt);
上面的代码效果很好,但看起来很麻烦。我也不确定它是多么万无一失。有更多理解的人有改进吗? 我已经尝试在线查看,但事实证明它很难搜索。
答案 0 :(得分:4)
您可以将整个函数类型设为模板参数。然后编译器可以使用输入参数推导出模板参数。
template <typename F, typename T>
void foo (F func, const T& p)
{
// do code
func(p);
}
foo(&someFunc, someInt);
这也有一个优点,即可以支持功能对象。 (这也是标准库(“STL”)支持将函数传递给算法的方式。)