如何获得用作模板参数的任意函数类型的数量?
该函数可以是普通函数、lambda 或仿函数。例子:
template<typename TFunc>
std::size_t getArity()
{
// ...?
}
template<typename TFunc>
void printArity(TFunc mFunc)
{
std::cout << "arity: " << getArity<TFunc>() << std::endl;
}
void testFunc(int) { }
int main()
{
printArity([](){}); // prints 0
printArity([&](int x, float y){}); // prints 2
printArity(testFunc); // prints 1
}
我可以访问所有 C++14 功能。
我是否必须为每个函数类型(以及所有相应的限定符)创建专业化?或者有没有更简单的方法?