On Sunday, 28 January 2018 at 19:17:49 UTC, Steven Schveighoffer wrote:
This is insane. i > 0 is used in so many places. The only saving grace appears to be that int.min is just so uncommonly seen in the wild.

And another one that it does not happen when compiled with optimization (-O) and also that it does not affect all the ints:

---
import std.stdio;

void foo (T) ()
{
   auto i = T.min;
   writefln ("%12s: %24X %12s", T.stringof, i, i > cast(T) 0);
}

void main ()
{
   foo!byte;
   foo!short;
   foo!int;
   foo!long;
}
---

        byte:                       80        false
       short:                     8000        false
         int:                 80000000         true
        long:         8000000000000000         true

In 32 bit mode:

        byte:                       80        false
       short:                     8000        false
         int:                 80000000         true
        long:         8000000000000000        false

Reply via email to