On 04/15/2016 03:13 PM, Steven Schveighoffer wrote:
On 4/15/16 2:48 PM, Andrei Alexandrescu wrote:
On 4/15/16 2:46 PM, Steven Schveighoffer wrote:
inout(T)[] overlap(T)(inout(T)[] r1, inout(T)[] r2) @trusted pure
nothrow
{
     import std.algorithm: min, max;
     auto b = max(r1.ptr, r2.ptr);
     auto e = min(r1.ptr + r1.length, r2.ptr + r2.length);
     return b < e ? b[0 .. e - b] : null;
}

Is that better or worse than the one without inout? -- Andrei

Better. It generates one implementation for all 9 combinations of
mutability. Yours generates 9 identical binary functions.

A valid but weak argument. There's been long talk about eliminating binary identical functions in the front end (some linkers already do it). That would be the real solution that would help cases unrelated to inout, too.

And yours possibly depends on a bug:
https://issues.dlang.org/show_bug.cgi?id=15930

Red herring. Fixing the bug shouldn't break that code.


Andrei


Reply via email to