Я проверяю числовой диапазон значений с типом признаков, а неподписанные типы генерируют предупреждение.
Comparison of unsigned expression >= 0 is always true
Как отключить некоторое предупреждение в определенном диапазоне кода? Я использовал стиль GCC #pragma
с Clang, но это не работает.
Вот мой код.
template<typename originT, typename destinationT>
void
assertForNumericRange(const originT value)
{
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wtype-limits"
assertWithReason(value >= std::numeric_limits<destinationT>::min());
assertWithReason(value <= std::numeric_limits<destinationT>::max());
#pragma GCC diagnostic pop
}
Примечание
В настоящее время я разделил это утверждение на три группы: с плавающей запятой, unsigned int, signed int. Но я хочу объединить их в один, если это возможно.
Я использую Xcode 5.0 beta. В командной строке он сообщает об этом: Версия Apple LLVM
5.0 (clang-500.1.58) (based on LLVM 3.3svn)
Target: x86_64-apple-darwin12.3.0
Thread model: posix