J'ai une fonction de gabarit que je m'attends à être modélisée pour différents types à différents endroits.
Le problème est que je voudrais savoir au moment de la compilation s'il existe une spécialisation pour le type donné pour générer de deux manières différentes un autre modèle.Les modèles C++ peuvent-ils vérifier si une fonction a été surchargée pour un type donné?
template<typename T>
bool tobool(const T&){ throw Exception("Can't cast to bool");};
template<> bool tobool<bool>(const bool &value){ return value;}
Je sais que vous pouvez tester la fonction existance comme dans here.
Y a-t-il une chance de savoir si le tobool a été spécialisé? Imaginez que je veux générer un isbool() qui retourne true si tobool() a été spécialisé et renvoie false sinon.
Ai-je bien compris? : Vous voulez une métafonction qui pour chaque type T montre si tobool a été spécialisé pour T? –
Oui, j'ai besoin de savoir si T utilise un langage générique ou spécialisé. –
Donc, au moment de la compilation, vous pouvez vérifier son existence et faire quoi avec le résultat? –