MrShoor
Я стараюсь избегать enum class из-за UB
Huldra
> Я стараюсь избегать enum class из-за UB
какого UB ?
MrShoor
> какого UB ?
enum access_t { read = 1, write = 2, exec = 4 }; // enumerators: 1, 2, 4 range: 0..7 access_t x = static_cast<access_t>(8.0); // undefined behavior since C++17 access_t y = static_cast<access_t>( 8); // undefined behavior since C++17 enum foo { a = 0, b = UINT_MAX }; // range: [0, UINT_MAX] foo x= foo( -1); // undefined behavior since C++17, // even if foo's underlying type is unsigned int
Huldra
А нафига ты используешь енам там, где логично взять std::bitset?
И причём тут вообще проблема знаковых типов?
Да может вы и правы и стоит заменить enum на enum class
Так никто и не нашелся, пришлось делать самостоятельно
Huldra
> Я стараюсь избегать enum class из-за UB
После подобных заявлений шанс найти кого-то стремится к 0.
Почему?
Huldra
> Почему?
Никто из хороших программистов не хочет иметь дело с глупым начальником. А те, кто не понимают глупость подобных утверждений не потянут.
samrrr
Почему сразу "с глупым начальником" ?
Huldra
> Почему сразу "с глупым начальником" ?
Сегодня ты избегаешь class enum по надуманному предлогу, завтра тебе захочется запретить методы и приватные переменные потомучто они тоже имеют уб при кривом использовании.
В чем надуманность?
Если значение за пределами диапазона значений enum будет скастовано к enum, будет UB.
Способы получить: читать данные из файла, парсить данные полученные по сети, плохо валидировать ввод от пользователя.
Huldra
> Так никто и не нашелся, пришлось делать самостоятельно
А что искалось то? Сделать аппаратные спрайты?
Huldra
> Способы получить: читать данные из файла, парсить данные полученные по сети,
> плохо вали
Если ты конвертируешь в enum рандомные данные, то надо делать проверку на их валидность.
Мне кажется, со всеми этими перделками, навроде static_cast, проггеры забыли, что значит кодить тщательно.
Для проверки соответствия рандомных данных валидному значению потребуется runtime проверка. static_cast тут просто ничем не может помочь.
MrShoor
> А что искалось то? Сделать аппаратные спрайты?
ну да