J'ai une classe de modèle dans laquelle j'ai une fonction normale. Mais je veux activer cette fonction normale seulement pour certaines instanciations d'une classe template. J'ai regardé boost :: enable_if et cela ne correspond pas exactement à mes besoins/peut-être que je ne suis pas capable de l'utiliser pour mon besoin.Activation sélective de la fonction de classe de modèle
typedef boost::mpl::vector< bool, int, double > CheckTypes;
template<class X>
class P
{
void init(int x,
typename boost::enable_if< boost::mpl::contains<CheckTypes, X> >::type* dummy = 0);
};
Quelqu'un peut-il aider mw à résoudre ce problème? Une chose importante est que la solution ne devrait rien attendre du code appelant. Et la classe est explicitement instanciée.
Merci, Gokul.
Lorsque vous dites "activer", voulez-vous dire "cette fonction n'existe même pas si vous instanciez avec les types X, Y ou Z?" – templatetypedef
Je veux que la fonction n'existe que pour bool, int et double dans mon exemple. C'est possible? – Gokul
enable_if devrait fonctionner correctement. –