Мой вопрос сегодня довольно прост: почему компилятор не может вывести параметры шаблона из конструкторов классов, в отличие от параметров функции? Например, почему следующий код не может быть действительным:
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
}
Как я уже сказал, я понимаю, что это неверно, поэтому мой вопрос почему не так ли? Позволит ли это создать какие-либо серьезные синтаксические дыры? Есть ли случай, когда никто не хотел бы эту функциональность (где вывод типа может вызвать проблемы)? Я просто пытаюсь понять логику, позволяющую сделать вывод из шаблона для функций, но не для классов, сконструированных надлежащим образом.