ちょっと実験。intとuintに対する比較

int a= -5;
uint b= 5;
if(a > b)
printf("a > b");

同じサイズのsignedとunsignedの比較した場合、compile errorがでるかと思ったんだけど普通にコンパイルできますね…確かに一々cast演算子つけるのも面倒か。けどD言語にwarningがない以上、compile errorが正しい気が。ただ、if(-1>1)の比較。これはバグでは…


追記:

<, <=, >, >= 式の時は、 符号付き整数と符号なし整数の比較はエラーとなります。 明示的にどちらかのオペランドをキャストしてください。
http://www.kmonos.net/alang/d/expression.html

とあるからバグみたいだ。dmd1.10で確認。多分既にnewsgropeにもバグ報告されてるんだろうけど探すの面倒。