如果我有模板类
template <class T>
class foo
{ /**/ }
如果T
是函数指针,我将如何找到?
有std::is_pointer
和std::is_function
但没有is_function_pointer
答案 0 :(得分:4)
只需删除指针并检查结果是否为函数。
以下是代码示例:
#include <utility>
#include <iostream>
template<class T> constexpr bool foo() {
using T2 = std::remove_pointer_t<T>;
return std::is_function<T2>::value;
}
int main() {
std::cout << "Is function? " << foo<void (int)>()
<< "; is function pointer? " << foo<int (*)()>() << "\n";
}