История изменений
Исправление eao197, (текущая версия) :
Чтобы не путаться в bool-ах достаточно использовать enum class.
О том и речь, что enum class для этого не годится совершенно.
Для замены bool-ов enum class не годится?
Да ладно вам. Скажем, было:
some_handle open_handle(const std::string & name, bool auto_init, bool auto_close);
...
auto my_handle = open_handle("...", true, false);
Элементарно переделывается в:
enum class auto_init { yes, no };
enum class auto_close { yes, no };
some_handle open_handle(const std::string & name, auto_init auto_init_mode, auto_close auto_close_mode);
...
auto my_handle = open_handle("...", auto_init::yes, auto_close::no);
Так что с последовательностью bool-ов enum class просто на ура справляется.
А вот со случаем битовых флагов – не очень. Хотя, тут как посмотреть: https://wandbox.org/permlink/tpyhgltWPUIH3yVi (а в C++23 обещают to_underlying завезти).
Исходная версия eao197, :
Чтобы не путаться в bool-ах достаточно использовать enum class.
О том и речь, что enum class для этого не годится совершенно.
Для замены bool-ов enum class не годится?
Да ладно вам. Скажем, было:
some_handle open_handle(const std::string & name, bool auto_init, bool auto_close);
...
auto my_handle = open_handle("...", true, false);
Элементарно переделывается в:
enum class auto_init { yes, no };
enum class auto_close { yes, no };
some_handle open_handle(const std::string & name, auto_init auto_init_mode, auto_close auto_close_mode);
...
auto my_handle = open_handle("...", auto_init::yes, auto_close::no);
Так что с последовательностью bool-ов enum class просто на ура справляется.
А вот со случаем битовых флагов – не очень. Хотя, тут как посмотреть: https://wandbox.org/permlink/tpyhgltWPUIH3yVi