我将一个函数指针传递给一个函数模板:
int f(int a) { return a+1; } template<typename F> void use(F f) { static_assert(std::is_function<F>::value,"Function required"); } int main() { use(&f); // Plain f does not work either. }
但是,模板参数F不被is_function识别为一个函数,静态断言失败.编译器错误消息说F是int(*)(int),它是一个指向函数的指针.为什么这样做呢?在这种情况下,如何识别函数或指针?