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