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)};
};
Et si je tente de l'exécuter dans le principal:détecter si le type est une fonction
void functionA();
int _tmain(int argc, _TCHAR* argv[])
{
int a = 0;
cout << IsFunc<functionA>::value;//<=--------HERE
return 0;
}
Je reçois une erreur:
Erreur 1 erreur C2923: 'IsFunc': « fonctionn 'n'est pas un type de modèle valide
Qu'est-ce que je fais mal?
Merci
IsFunc d'autre part, est très bien :) –
@Armen: C'est parce que 'void()' est un identifiant de type. La norme dit 'Un argument de modèle pour un paramètre de modèle qui est un type doit être un type-id.' –
@Kenny && Armen est-il donc un moyen de vérifier si identyfier est une fonction? –