簡単に修正できる問題が発生していますが、途方に暮れています...
次のコードを実行するテンプレートがあります。
T value = d;
if ( std::numeric_limits< T >::is_signed )
{
if ( value < 0 )
{
*this += _T( "-" );
value = -(signed)value;
}
}
明らかな理由で、このコードが符号なし型用にコンパイルされると、GCCは警告を出します(データ型の範囲が限られているため、比較は常にfalseです)。私はこの背後にある理由を完全に理解しており、numeric_limitsチェックを入れて、コンパイラーにシャットダウンさせることができるかどうかを確認しました(MSVCでは機能しました)。悲しいかな、GCCの下で私は警告を受けます。この警告を修正する方法はありますか(GCCで実行できるかどうかさえわかりませんが、警告を無効にする以外に)ありますか?とにかくコードが呼び出されることはなく、オプティマイザーもコードをコンパイルすると思いますが、警告を取り除くことはできません。
誰かが私にこれに対する解決策を与えることができますか?
乾杯!