On Tuesday, 5 February 2013 at 18:33:36 UTC, Andrei Alexandrescu wrote:
I have a DIP in the making that makes "ref" entirely sealed, i.e. it makes it impossible to have a dangling ref in safe code. If that DIP gets approved, then DIP23 gets considerably simplified because operator& won't be applicable to the result of a function anymore.

Andrei

I hope it at least considers my proposal with regard to 'out' return values. 'out' implies ref and guarantees that the result is as good as global:

out int foo(ref int a) { return a; } // Error, 'out' return may not return ref parameter
out int goo(ref int a) { return new int; } // Fine

My impression was that this would solve 98% of problems, the other 2% requiring scope parameters, which also imply ref:

ref int haa(ref int a, scope int b) { return b; } // Error, may not return scope parameter
ref int gaa(ref int a, scope int b) { return a; } // Fine

Reply via email to