Re[19]: Как записать такое в современном C++?
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 31.07.24 16:35
Оценка:
Здравствуйте, B0FEE664, Вы писали:

ЕМ>>Потому, что enum создает группу идентификаторов, объединенных общей идеей


BFE>И для этого они лежат в namespace.


Тогда почему там не лежат члены классов?

ЕМ>>Почему в обсуждаемом примере все идентификаторы начинаются на E?


BFE>Предполагаю, что это сокращение от слова ERROR.


А зачем нужен такой префикс? Уникальность обеспечивается и без него.

BFE>Вот если их поместить в отдельный namespace, то они и не будут выбиваться из схемы (раз уж изначально это не было сделано)


Изначально, напомню, инкапсуляции не было и для полей структур. Ее тоже зря сделали?

BFE>использовать #define для констант уместнее, чем enum.


Я бы сказал, что уместнее использовать [static] const, а при невозможности — #define. Но это для разрозненных констант, от которых не ожидается какой-либо регулярности. Если же константы хотя бы в основе завязаны на перечисление, то вполне логично определять их в перечислении.

BFE>Вот сейчас уже есть нормальные константы. Вы перестали использовать перечисления для того, чтобы задавать константы?


Я ж говорил, что для "просто констант" давно использую [static] const. Но, если мне нужны константы, например, для кодов ошибок, разделенных на группы (по степени серьезности, или по ситуациям, по связанным объектам и т.п.), то альтернативой enum будет только ручной инкремент. Вы предлагаете использовать его?

Если Вы до сих пор пытаетесь провести аналогию с шаблонными трюками, то это ж несопоставимые вещи. enum — простая конструкция, ее смысл очевиден любому, кто хоть более-менее знаком с языком. Она не порождает отдаленных последствий. Ну и то, что в языке таки появился enum class, уже говорит о том, что проблему осознали, и приняли меры для ее устранения. А что появилось в языке для замены шаблонной магии? Даже if constexpr можно применить только к исполняемому коду. Это не метапрограммирование, а издевательство.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.