Por que não inferir parâmetro de modelo do construto

minha pergunta hoje é bem simples: por que o compilador não pode inferir parâmetros de modelo de construtores de classe, da mesma forma que pode fazer com parâmetros de função? Por exemplo, por que o código a seguir não pode ser válido:

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
}

Como digo, entendo que isso não é válido, então minha pergunta éporqu não é? Permitir isso criaria grandes falhas sintáticas? Existe uma instância em que não seria desejável essa funcionalidade (em que inferir um tipo causaria problemas)? Estou apenas tentando entender a lógica por trás da permissão de inferência de modelo para funções, mas não para classes adequadamente construída

questionAnswers(24)

yourAnswerToTheQuestion