Re[5]: enum class and if expression
От: boomer  
Дата: 19.12.19 14:32
Оценка:
Здравствуйте, rg45, Вы писали:

R>Здравствуйте, удусекшл, Вы писали:


R>>>Есть такое мнение. Но я бы не стал это воспринимать как истину в последней инстанции. Особенно с учетом всех требований стандарта. Многое указывает на то, что именно под такое использование подгонялись современные требования.


У>>Хм, возможно. Но тогда почему не предоставлен механизм для использования в условных конструкциях?


R>Ну, не то чтобы совсем не предоставлен: перечисления можно использовать в switch, их можно сравнивать друг с другом. Для перечислений по-прежнему доступна zero-initialization: выражения Flags{} и Flags() конструируют "нулевой" объект перечисления, независимо от того, присутствует ли ноль в списке элементов. А значит, всегда есть возможность написать проверку: if (flags != Flags{}). Я думаю, explicit конверсию в bool просто прошляпили. И, рано или поздно, разберутся как следует и накажут кого попало, как говорится.


Преобразование в bool для перечисления не имеет смысл. Если, конечно, не использовать его как набор флагов. Но это само по себе, как забивание гвоздей микроскопом.

Я вообще заметил, что плюсовики любят использовать инструменты языка совсем не так, как они задумывались. Согласен, правда, что в некоторых случаях такое использование достаточно удобно.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.