void main(){ string s; int a = s.length; assert(a == 0); assert(s.length == 0); assert(a == 0); assert(a > -1); assert(s.length > -1); //fails }
Sorry, invalid. typeof(s.length) is unsigned, typeof(-1) is signed. The compiler should throw an error on the last assert, but doesn't. Instead, it casts -1 to size_t, resulting in something like "assert(s.length > 0xFFFFFFFF);" See bug 259.
Oops