There is no way to explicitly specify the template arguments when calling a constructor template, so they have to be deduced through argument deduction. This is because if you say:
Foo<int> f = Foo<int>();
<int> is the template argument list for the type
Foo, not for its constructor. There’s nowhere for the constructor template’s argument list to go.
Even with your workaround you still have to pass an argument in order to call that constructor template. It’s not at all clear what you are trying to achieve.