假设我在通用上下文中获得了以下代码;
auto function = T::getFunctionPtr();
在编译时是否可以检查'function'是否是一个全局函数而不是静态类方法?
答案 0 :(得分:2)
在编译时检查'function'是全局函数还是静态类方法的唯一方法是检查'T :: getFunctionPtr()'的返回类型。但是全局函数和静态类方法具有相同的类型,如下所示:
#include <iostream>
#include <typeinfo>
using namespace std;
void GlobalFunc() {}
class A {
public:
static void StaticFunc() {}
};
int main() {
cout << std::boolalpha;
cout << (typeid(GlobalFunc) == typeid(A::StaticFunc)) << endl;
return 0;
}
输出“true”。 http://ideone.com/oo70F9。 所以答案是否定的,你不能在编译时这样做。