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