Just to be pellucidly clear, the case you think likely has merit is for an enhancement so that
 S* p; //suitably initialized
can e.g. make the call
 p.func(3);
of
 void func(S s, int i) { ... }
or
 void func(ref S s, int i) { ... }
right?
(Where it's important that the S parameter is first in the usual way, and the overloading rules are suitably amended to give this interpretation suitably low priority.)

Whereas you do not (correct me if I'm wrong) think that an implicit conversion of S* to ref S (or S) on function call is a good idea, e.g.
 S* p; //suitably initialized
cannot e.g. make the call
 func(p, 3);
of
 void func(S ref s, int i) { ... }
or
 void func(S s, int i) { ... }

So you've 'solved' one of the two calls that monarch_dodra indicated concern about, but not the other, which you think should require explicit indirection.

Assuming I've summarized the pragmatics of your post correctly (apologies otherwise), what is the reason for the non-uniformity here? As monarch_dodra points out, the dangers are the same in both calls. So if D is OK with one, why not with the other, which presents the possibility of nice syntactic simplification.

I guess this is tantamount to asking you why implicit conversion of S* to ref S would be so bad in general if you'll effectively permit that in certain cases (the call p.func(3) amounts to exactly that).

It'd be nice to hear the D insider view on this.

Carl.

Reply via email to