У меня проблема, которую, я уверен, легко исправить, но я в растерянности ...
У меня есть шаблон, который выполняет следующий код:
T value = d;
if ( std::numeric_limits< T >::is_signed )
{
if ( value < 0 )
{
*this += _T( "-" );
value = -(signed)value;
}
}
Теперь по очевидным причинам GCC выдает мне предупреждение ( сравнение всегда ложно из-за ограниченного диапазона типов данных ), когда этот код компилируется для типа без знака.Я полностью понимаю причину этого и вставил проверку numeric_limits, чтобы посмотреть, смогу ли я заставить компилятор замолчать (это работало для MSVC).Увы, под GCC я получаю предупреждение.Есть ли способ (кроме отключения предупреждения, которое я даже не знаю, если вы можете сделать с GCC), чтобы исправить это предупреждение?В любом случае код никогда не будет вызван, и я предполагаю, что оптимизатор также скомпилирует его, но я не могу избавиться от предупреждения.
Может кто-нибудь дать мне решение этой проблемы?* Ура!