From 542aacea41c350b8468ba3987b977e886d3ef169 Mon Sep 17 00:00:00 2001 From: neargye Date: Fri, 18 Mar 2022 14:08:03 +0400 Subject: [PATCH] clean-up --- include/magic_enum.hpp | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/include/magic_enum.hpp b/include/magic_enum.hpp index 1b52c38..a17e30f 100644 --- a/include/magic_enum.hpp +++ b/include/magic_enum.hpp @@ -942,7 +942,9 @@ template using D = std::decay_t; using U = underlying_type_t; - if constexpr (detail::is_sparse_v || detail::is_flags_v) { + if constexpr (detail::count_v == 0) { + return {}; // Empty enum. + } else if constexpr (detail::is_sparse_v || detail::is_flags_v) { return detail::constexpr_switch<&detail::values_v, detail::case_call_t::index>( [](std::size_t i) { return optional{i}; }, value, @@ -1027,7 +1029,9 @@ template using D = std::decay_t; using U = underlying_type_t; - if constexpr (detail::is_sparse_v) { + if constexpr (detail::count_v == 0) { + return {}; // Empty enum. + } else if constexpr (detail::is_sparse_v) { if constexpr (detail::is_flags_v) { constexpr auto count = detail::count_v; auto check_value = U{0}; @@ -1069,7 +1073,9 @@ template > using D = std::decay_t; using U = underlying_type_t; - if constexpr (detail::is_flags_v) { + if constexpr (detail::count_v == 0) { + return {}; // Empty enum. + } else if constexpr (detail::is_flags_v) { auto result = U{0}; while (!value.empty()) { const auto d = detail::find(value, '|'); @@ -1110,8 +1116,6 @@ template > } return {}; // Invalid value or out of range. } - } else { - return {}; } }