Who wore it better?

Andrei Alexandrescu via Digitalmars-d digitalmars-d at puremagic.com
Fri Apr 15 11:48:26 PDT 2016


On 4/15/16 2:46 PM, Steven Schveighoffer wrote:
> On 4/15/16 1:24 PM, Andrei Alexandrescu wrote:
>> I grepped phobos for "inout" and picked a heavy one. Not even cherry
>> picking here. You be the judges.
>>
>> Before:
>>
>> inout(T)[] overlap(T)(inout(T)[] r1, inout(T)[] r2) @trusted pure nothrow
>> {
>>      alias U = inout(T);
>>      static U* max(U* a, U* b) nothrow { return a > b ? a : b; }
>>      static U* min(U* a, U* b) nothrow { return a < b ? a : b; }
>>
>>      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;
>> }
>>
>> After:
>>
>> auto overlap(T, U)(T[] r1, U[] r2) @trusted pure nothrow
>> if (is(typeof(r1.ptr < r2.ptr) == bool))
>> {
>>      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;
>> }
>>
>> Who wore it better?
>
> 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




More information about the Digitalmars-d mailing list