¿Por qué no inferir el parámetro de plantilla del constructor?

mi pregunta hoy es bastante simple: ¿por qué el compilador no puede inferir parámetros de plantilla de los constructores de clases, tanto como puede hacerlo de los parámetros de función? Por ejemplo, ¿por qué no podría ser válido el siguiente código:

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, entiendo que esto no es válido, así que mi pregunta espor qu ¿no es así? ¿Permitir esto crearía agujeros sintácticos importantes? ¿Hay alguna instancia en la que uno no quisiera esta funcionalidad (donde inferir un tipo causaría problemas)? Solo estoy tratando de entender la lógica detrás de permitir la inferencia de plantilla para funciones, pero no para clases adecuadamente construidas.

Respuestas a la pregunta(24)

Su respuesta a la pregunta