比較とかそういう

unsignedとsignedの比較は、どっちに合わせられるのが規格上正しいんでしょうか。
両方ともをよりビット幅の大きい型に直してから比較するのは勿体無いので無しとしても、unsigned_var > -1がunsigned_var > 0xffffになったりするのは悪夢ですのでsignedで比較する方が安全と思うのですが、unsignedでの比較になるコンパイラもあるんですよねぇ。
勿論、警告出してくれたら一番嬉しいのですけど。
なにやらgccでもunsignedの比較になるのが怖いんですけど。
C++Builderでも警告は出たものの結果は符号無しの比較に……そういう規格なのか!?