Warum nicht den Template-Parameter aus dem Konstruktor ableiten?

meine Frage heute ist ganz einfach: warum kann nicht der compiler template-Parameter aus der Klasse Konstruktoren, ähnlich wie Sie es tun können Funktion Parameter? Zum Beispiel, warum nicht Sie den folgenden code gültig:

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
}

Wie gesagt, ich verstehe, dass dies nicht gilt, so meine Frage ist warum ist es nicht? Würde, so dass daraus keine größeren syntaktischen Löcher? Gibt es eine Instanz wo man würde nicht wollen, dass diese Funktionalität (wo Herleitung eines geben würde, die Probleme verursachen)? Ich versuche nur zu verstehen, die Logik dahinter, so dass die Vorlage Ableitung für Funktionen, die noch nicht mit entsprechend konstruierten Klassen.

InformationsquelleAutor der Frage GRB | 2009-06-11

Schreibe einen Kommentar