我正试图找到一种方法来提取参数的类型和数量,并返回类型函数指针,这样我就可以这样编写:
int foo(int x, int y)
{
return x+y;
}
template<class T, class U>
U callfunc(T, ...);
int main()
{
int k = callfunc(&foo, 3, 5);
}
callfunc
将检查参数的数量和类型是否正确并返回结果。但是应该如何实施?
我已经搜索了一些内容,发现一些文章使用宏和模板来涵盖类似的主题,但仍然无法做到。
有人可以提供一些指示吗?
谢谢!
P.S:我不能使用可变参数模板,因为VS2012不支持它。
答案 0 :(得分:2)
您需要一些可变参数模板,例如:
template<typename TResult, typename ...TArgs>
TResult callfunc(TResult (*fn)(TArgs...), TArgs... args)
{
/* do something with the args, if you wanted */
TResult result = fn(std::forward(args)...);
/* do something to the return value, if you wanted */
return std::forward(result);
}