Здравствуйте!
Был тут как-то разговор за enum флаги, я рассказал, что у меня генератор enum'ов генерит пачку определений на макросах, и одним из макросов создаются битовые операторы для данного enum.
Кто-то из вас, коллеги, предложил другую идею: есть базовый constexpr шаблон, который что-то типа is_flag_enum<T>, и возвращает false. И есть глобально определённый набор битовых операторов для enum флагов, которые enable_if от is_flag_enum<T>. И для того, чтобы сделать enum флаговым, просто достаточно написать специализацию is_flag_enum для данного enum.
Точно помню, что это был кто-то из довольно активных участников, может, вспомнит себя? Ну, или, может, кто-то помнит ту дискуссию? Что-то поиском найти не получилось. В принципе, там писать не особо долго, и идея довольно простая, но лень
Хочется просто скопипастить
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
Здравствуйте, r0nd, Вы писали:
M>>Кто-то из вас, коллеги, предложил другую идею: есть базовый constexpr шаблон
R>implicit operator bool
О, спасибо. И ведь в моей не такой и старой теме. Совсем склероз замучал
Здравствуйте, 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
Здравствуйте, Marty, Вы писали:
M>Кто-то из вас, коллеги, предложил другую идею: есть базовый constexpr шаблон, который что-то типа is_flag_enum<T>, и возвращает false. И есть глобально определённый набор битовых операторов для enum флагов, которые enable_if от is_flag_enum<T>. И для того, чтобы сделать enum флаговым, просто достаточно написать специализацию is_flag_enum для данного enum.
Сейчас модно делать это на концептах и ограничениях
Здравствуйте, Кодт, Вы писали:
К>Сейчас модно делать это на концептах и ограничениях
Сейчас модно и в стрингах рассекать (и я сейчас не про std::string).
Я придерживаюсь идеи, что в прод можно пилить код на ТЕКУЩИЙ_СТАНДАРТ-1, а лучше -2. А если бегать за новыми фичами, то есть большая вероятность обкакаться