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