On Saturday, 17 January 2015 at 00:14:47 UTC, Andrei Alexandrescu
wrote:
On 1/16/15 3:55 PM, Steven Schveighoffer wrote:
On 1/16/15 6:25 PM, Walter Bright wrote:
On 1/16/2015 3:10 PM, zeljkog wrote:
Why is it restricted to @safe?
Being a systems programming language, an escape from it may
be necessary.
So:
ref int foo(ref int x) { return x; }
is OK as long as it's not marked @safe? Is this made clear in
the DIP? I
didn't see that. In fact @safe is never mentioned except in
the code
examples. Even in the inline text examples, it's not mentioned.
In at least one place, it's implied that the above would not
compile
under the DIP: "With the proposed semantics, a function is
disallowed to
return a ref parameter of a part thereof UNLESS the parameter
is also
annotated with return."
-Steve
The DIP applies to @safe code only for now. Steve, could you
please add a clarifying section. Thanks! -- Andrei
Overall I like this improvement. I think the change to `return`
is good, keeps things clear; at least I had difficulty keeping
the various usages clear (didn't have time to comment in the
thread). Thanks for that. Also, I realized I was unclear about it
applying to safe and not unsafe code, and why. Nice
clarification. Thanks.
Joseph