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