ma question aujourd'hui est assez simple: pourquoi ne peut pas le compilateur de déduire les paramètres de modèle de constructeurs de classe, autant qu'il peut le faire à partir des paramètres de fonction? Par exemple, pourquoi ne pas le code suivant:
template<typename obj>
class Variable {
obj data;
public: Variable(obj d)
{
data = d;
}
};
int main()
{
int num = 2;
Variable var(num); //would be equivalent to Variable<int> var(num),
return 0; //but actually a compile error
}
Comme je l'ai dit, je comprends que ce n'est pas valide, donc ma question est pourquoi n'est-il pas? Permettant à créer des majeurs syntaxique des trous? Est-il une instance où l'on ne voudrait pas cette fonctionnalité (où déduire un type causerait des problèmes)? J'essaie juste de comprendre la logique derrière l'autorisation de modèle d'inférence pour les fonctions, mais pas pour l'convenablement construit des classes.
Merci