我将一个函数指针传递给一个函数模板:
- 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),它是一个指向函数的指针.为什么这样做呢?在这种情况下,如何识别函数或指针?