DIP 1016--ref T accepts r-values--Formal Assessment

Rubn where at is.this
Thu Jan 24 23:46:07 UTC 2019


On Thursday, 24 January 2019 at 23:18:11 UTC, kinke wrote:
> Proposed `out` semantics:
> ---
> void increment(out long value) { ++value; }
> increment(out value);
> ---
>
> vs. pointer version with current `out` semantics:
> ---
> void increment(long* pValue) { ++(*pValue); }
> increment(&value);
> ---
>
> The pointer workaround is both ugly (C) and unsafe (you can 
> pass null).

@safe void safestFunction() {
     int* ptr;
     increment(out *ptr); // can also pass null to ref/out even in 
@safe
}

It's probably going to be a hard sell to change the behavior of 
out now as well. It'd break quite a bit of code I think, did a 
search through druntime and phobos and quite a few functions use 
it. Maybe user code uses it less, I know I never use it.


More information about the Digitalmars-d-announce mailing list