Есть ли способ сделать тип enum
неподписанным? Следующий код дает мне предупреждение о сравнении с подписью/без знака.
enum EEE {
X1 = 1
};
int main()
{
size_t x = 2;
EEE t = X1;
if ( t < x ) std::cout << "ok" << std::endl;
return 0;
}
Я попытался заставить компилятор использовать неподписанный базовый тип для перечисления со следующим:
enum EEE {
X1 = 1,
XN = 18446744073709551615LL
// I've tried XN = UINT_MAX (in Visual Studio). Same warning.
};
Но это все еще дает предупреждение.
Изменение константы на UINT_MAX
заставляет ее работать в GNU С++, как это должно быть в соответствии со стандартом. Кажется, это ошибка в VS. Спасибо Джеймсу за подсказку.