template<class T>
struct IsFunc
{
typedef char one;
typedef struct
{
char dummy_[2];
} two;
static one f(...);
static two f(T (*)[1]);
enum {value = (sizeof(f<T>(0)) == 1)};
};
如果我尝试在主运行:检测,如果类型是一个函数
void functionA();
int _tmain(int argc, _TCHAR* argv[])
{
int a = 0;
cout << IsFunc<functionA>::value;//<=--------HERE
return 0;
}
我得到一个错误:
错误1个错误C2923:“IsFunc”:“泛函'不是有效的模板类型
我在做什么错?
感谢
另一方面IsFunc,是细:) –
2010-10-10 12:17:21
@Armen:那是因为'空隙()'是一种类型的ID。该标准说:“一个模板参数是一个类型的模板参数应该是一个类型id。”# – 2010-10-10 12:20:00
@Kenny && Armen所以有没有办法检查identyfier是否是一个函数? – 2010-10-10 12:22:15