J'ai fait la méthode suivante comme une petite expérience pour savoir si cela serait possible:Autoriser la déduction des arguments de modèle de type de membre pointée par le pointeur à l'argument membre de la méthode
template<typename dataT>
class DemographicNode
{
//...
template<typename varT>
varT count(const varT dataT::* variable = &dataT::citizens) const {
//...
}
//...
}
Cela fonctionne comme attendu sauf pour le fait que cela ne permet pas la déduction d'argument de modèle de varT
même si un appel à cette méthode fournirait toutes les informations disponibles à la compilation requises.
Est-il possible d'activer la déduction d'argument de modèle dans ce cas? J'utilise VC++ 17.
Edit: Je dois l'appeler de la manière suivante:
gameState.getCountries()[0]->getDemoGraphics().count<double>();
et je veux l'appeler avec quelque chose comme ceci:
gameState.getCountries()[0]->getDemoGraphics().count();
Comment appelez-vous cela? – songyuanyao
Pourriez-vous montrer la partie appelante? Je ne peux pas reproduire le problème. – Holt
La déduction de l'argument de modèle ne fonctionne pas avec les arguments par défaut. – songyuanyao