可以通过可变模板获得函数的参数的个数:
#include <iostream>
using namespace std;
template<typename R, typename... Args>
constexpr int funcParamNum(R(*func)(Args...))
{
constexpr int funcParamNum = sizeof...(Args);
return funcParamNum;
}
void f1(int a){}
void f2(int a, int b){}
class A{
public:
static void f3(int a, int b, int c){}
};
int main()
{
cout<<funcParamNum(f1)<<endl;
cout<<funcParamNum(f2)<<endl;
cout<<funcParamNum(A::f3)<<endl;
return 0;
}
运行程序输出:
1
2
3
可以看到,通过该改函数可以获得函数以及类的静态函数的参数的数量