我试图用来std::is_function
确定一个变量是否是一个函数指针。
运行以下代码时
#include <iostream>
#include <typeinfo>
using namespace std;
int main() {
typedef int(*functionpointer)();
functionpointer pmain = main;
cout << typeid(functionpointer).name() << " "<< is_function<functionpointer>::value << endl;
cout << typeid(decltype(pmain)).name() << " " << is_function<decltype(pmain)>::value << endl;
cout << typeid(decltype(main)).name() << " " << is_function<decltype(main)>::value << endl;
cout << typeid(decltype(*pmain)).name() << " " << is_function<decltype(*pmain)>::value << endl;
return 0;
}
输出是
PFivE 0
PFivE 0
FivE 1
FivE 0
任何有洞察力的人都可以解释为什么最后一个表达式的std::is_function
计算结果为假吗?
(代码在g++4.7、g++4.8和clang++3.2下测试)