The Weka folks would like to see a compile error on negating unsigned types:
```
uint total = 0;
void add(int x) { total += x; }
ubyte popCount() { return 5; }

add(popCount());
add(-popCount());
writeln(total); // <-- what does this print? (behavior is different from C)
```

After adding the error, a few places in Phobos error out.
For example:
``` (std.format.formatIntegral)
    T arg = val;

    immutable negative = (base == 10 && arg < 0);
    if (negative)
    {
        arg = -arg;
    }
```

``` (std.conv.toTextRange)
    T value;

    bool negative = value < 0;
    Unqual!(Unsigned!T) v = negative ? -value : value;
```

So, adding the error may be nice, but it would make generic code a little more verbose.
Ideas? People OK with that?

cheers,
  Johan

Reply via email to