On Thursday, May 09, 2013 21:56:53 Steven Schveighoffer wrote: > What about specifying ref at the call site when you know you want the data > modified? > > fix(ref c[i]); > > Then if c decides to start returning by value, this is a compiler error. > > IMO, fix really should take a pointer. But we want to avoid pointers due > to the danger of them. > > so this is like applying & but keeps it safe.
That would be great except for UFCS. How would you designate the ref when it's the first argument? And I think that it's worse to have ref optional at the callsite than to not have it at all. If it weren't for UFCS, I probably would be in favor of requiring it at the callsite, but I just don't see how that could work with UFCS. Maybe C# has a way to deal with that, since it does have some sort of UFCS, and it does require ref at the callsite (at least from what I understand - I haven't used C# much)? - Jonathan M Davis
