我遇到了一个问题,我确信它很容易解决,但我不知所措......
我有一个执行以下代码的模板:
T value = d;
if ( std::numeric_limits< T >::is_signed )
{
if ( value < 0 )
{
*this += _T( "-" );
value = -(signed)value;
}
}
现在,出于显而易见的原因,当将此代码编译为无符号类型时,GCC 会给我一个警告(由于数据类型的范围有限,比较总是错误的)。我完全理解这背后的原因,我进行了 numeric_limits 检查,看看我是否可以让编译器闭嘴(它适用于 MSVC)。唉,在 GCC 下我得到了警告。有什么办法(除了禁用我什至不知道你是否可以用 GCC 做的警告)来修复这个警告吗?无论如何,代码永远不会被调用,我认为优化器也会将其编译出来,但我无法摆脱警告。
有人可以给我一个解决方案吗?
干杯!