That's a somewhat different consideration.
I agree that this working might be a good thing:
struct S(int n = 10)
{
int a;
}
auto s = S(4);
where the type of the struct does not depend on the type of the parameters to the constructor. However, I'm not sold that full-on implicit template instantiation should apply to members. How would we deal with this situation:
struct S(T)
{
this(T v) {}
}
auto s = S(4); //yay, compiler worked out S!int
later on someone does this:
struct S(T)
{
this(Q v) if(is(Q : T)) {}
}
for whatever reason.
Now all those nice constructor calls to S(someValue) are broken.
I dunno, somehow the implicit behaviour seems ok when it's very local but it feels dodgy at the level of separation that there can be between constructors and their types.