enum флаги
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 18.04.24 19:29
Оценка:
Здравствуйте!

Был тут как-то разговор за enum флаги, я рассказал, что у меня генератор enum'ов генерит пачку определений на макросах, и одним из макросов создаются битовые операторы для данного enum.

Кто-то из вас, коллеги, предложил другую идею: есть базовый constexpr шаблон, который что-то типа is_flag_enum<T>, и возвращает false. И есть глобально определённый набор битовых операторов для enum флагов, которые enable_if от is_flag_enum<T>. И для того, чтобы сделать enum флаговым, просто достаточно написать специализацию is_flag_enum для данного enum.

Точно помню, что это был кто-то из довольно активных участников, может, вспомнит себя? Ну, или, может, кто-то помнит ту дискуссию? Что-то поиском найти не получилось. В принципе, там писать не особо долго, и идея довольно простая, но лень Хочется просто скопипастить
Маньяк Робокряк колесит по городу
Re: enum флаги
От: r0nd  
Дата: 18.04.24 21:33
Оценка:
On Apr 18, 2024, 10:29 PM, Marty <2511@users.rsdn.org> wrote:


M>Кто-то из вас, коллеги, предложил другую идею: есть базовый constexpr шаблон


implicit operator bool

❧ “People’s passion and desire for authenticity is strong.” — Constance Wu
Re[2]: enum флаги
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 19.04.24 10:32
Оценка:
Здравствуйте, r0nd, Вы писали:


M>>Кто-то из вас, коллеги, предложил другую идею: есть базовый constexpr шаблон


R>implicit operator bool


О, спасибо. И ведь в моей не такой и старой теме. Совсем склероз замучал
Маньяк Робокряк колесит по городу
Re: enum флаги
От: vopl Россия  
Дата: 19.04.24 18:18
Оценка:
Здравствуйте, Marty, Вы писали:

M>Здравствуйте!


M>Был тут как-то разговор за enum флаги, я рассказал, что у меня генератор enum'ов генерит пачку определений на макросах, и одним из макросов создаются битовые операторы для данного enum.


M>Кто-то из вас, коллеги, предложил другую идею: есть базовый constexpr шаблон, который что-то типа is_flag_enum<T>, и возвращает false. И есть глобально определённый набор битовых операторов для enum флагов, которые enable_if от is_flag_enum<T>. И для того, чтобы сделать enum флаговым, просто достаточно написать специализацию is_flag_enum для данного enum.


M>Точно помню, что это был кто-то из довольно активных участников, может, вспомнит себя? Ну, или, может, кто-то помнит ту дискуссию? Что-то поиском найти не получилось. В принципе, там писать не особо долго, и идея довольно простая, но лень Хочется просто скопипастить


https://github.com/vopl/dci-core-idl/blob/master/include/dci/idl/flagsSupport.hpp
Re: enum флаги
От: Кодт Россия  
Дата: 19.04.24 23:00
Оценка:
Здравствуйте, Marty, Вы писали:

M>Кто-то из вас, коллеги, предложил другую идею: есть базовый constexpr шаблон, который что-то типа is_flag_enum<T>, и возвращает false. И есть глобально определённый набор битовых операторов для enum флагов, которые enable_if от is_flag_enum<T>. И для того, чтобы сделать enum флаговым, просто достаточно написать специализацию is_flag_enum для данного enum.


Сейчас модно делать это на концептах и ограничениях
Перекуём баги на фичи!
Re[2]: enum флаги
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 19.04.24 23:13
Оценка:
Здравствуйте, Кодт, Вы писали:

К>Сейчас модно делать это на концептах и ограничениях


Сейчас модно и в стрингах рассекать (и я сейчас не про std::string).

Я придерживаюсь идеи, что в прод можно пилить код на ТЕКУЩИЙ_СТАНДАРТ-1, а лучше -2. А если бегать за новыми фичами, то есть большая вероятность обкакаться
Маньяк Робокряк колесит по городу
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.