Почему бы не определить параметр шаблона из конструктора?

Мой вопрос сегодня довольно прост: почему компилятор не может вывести параметры шаблона из конструкторов классов, как это можно сделать из параметров функции? Например, почему следующий код не может быть действительным:

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
}

Как я уже сказал, я понимаю, что это не так, поэтому мой вопросПочему не так ли? Позволит ли это создать какие-либо серьезные синтаксические дыры? Есть ли случай, когда никто не хотел бы эту функциональность (где вывод типа может вызвать проблемы)? Я просто пытаюсь понять логику, стоящую за разрешением вывода шаблонов для функций, но не для правильно сконструированных классов.

Ответы на вопрос(12)

Ваш ответ на вопрос