我正在开发一个项目,我必须根据某些条件确定是否必须调用用户提供的函数。问题是提供的功能可以有任何签名。是否有可能使用当前的c ++ 11标准执行以下操作? (代码必须使用visual c ++ 2010进行编译):
template <what do I put here?>
void functioncall(std::function<and here> f)
{
ReturnType returnval = f(arguments);
}
答案 0 :(得分:2)
这甚至可以在C ++ 03中使用,只需使用不受限制的参数:
template<class F>
void call(F f) // accept any callable entity
{
ReturnType retval = f(arguments);
}