April 04, 2016
The values of the variables here can be determined during compilation.
Should there be some kind of warning like, unsigned integer may not be compared to a value less than zero; or there shouldn't be since the programmer should have known what he's doing?

import std.stdio;

void f1() {
    uint n = 0;
    uint ans = n - 1u;
    if (ans < 0) {				// warning?
        writeln("Less than or equal 0.");
    } else {
        writeln("Just like C++.");
    }
}

void f2() {
    const uint n = 0;
    const uint ans = n - 1u;
    static if (ans < 0) {			// warning?
        writeln("Less than or equal 0.");
    } else {
        writeln("Just like C++.");
    }
}

void main() {
    f1();
    f2();
}
April 03, 2016
On Monday, April 04, 2016 13:23:16 ric maicle via Digitalmars-d-learn wrote:
> The values of the variables here can be determined during compilation. Should there be some kind of warning like, unsigned integer may not be compared to a value less than zero; or there shouldn't be since the programmer should have known what he's doing?

Agruably, it should generate a warning, but it doesn't currently. There are these two related bug reports / enhancement requests though:

https://issues.dlang.org/show_bug.cgi?id=6949 https://issues.dlang.org/show_bug.cgi?id=259

- Jonathan M Davis