2012-05-29 4 views
3

J'ai actuellement un constructeur pour une classe qui est:C++: SFINAE et générateur/moteur aléatoire

template<class TX, class TY> MyClass(const TX &x, const TY &y) 

et me permettent de construire ma classe basée sur 2 valeurs.

Je voudrais être en mesure de construire ma classe avec des générateurs aléatoires/moteurs de C++ 2011.

template<class TG, class TE> MyClass(TG &generator, TE &engine) 

Comment modifier ce dernier constructeur parce que, sous cette forme, il est la même chose que le premier un pour le compilateur. Je pense pouvoir utiliser SFINAE mais je ne sais pas comment.

Merci beaucoup! Que représentent les arguments TX et TY dans le premier constructeur?

Répondre

3

Pour utiliser SFINAE, vous devez trouver un aspect des API du générateur et du moteur qui est distinctement distinct de TX et TY, comme une variable membre ou une fonction. La fonction seed peut être un bon candidat. Les techniques générales de vérification d'une fonction membre avec une signature connue sont documentées dans une autre réponse ici: Is it possible to write a template to check for a function's existence?