diff --git a/include/magic_enum.hpp b/include/magic_enum.hpp index 3531839..12daaf2 100644 --- a/include/magic_enum.hpp +++ b/include/magic_enum.hpp @@ -180,22 +180,6 @@ template return names; } -template -[[nodiscard]] constexpr std::optional enum_cast_impl(std::string_view value) noexcept { - static_assert(std::is_enum_v, "magic_enum::detail::enum_cast_impl requires enum type."); - constexpr auto values = values_impl(range_impl()); - constexpr auto count = values.size(); - constexpr auto names = names_impl(std::make_index_sequence{}); - - for (std::size_t i = 0; i < count; ++i) { - if (names[i] == value) { - return values[i]; - } - } - - return std::nullopt; // Invalid value or out of range. -} - template using enable_if_enum_t = typename std::enable_if>::type; @@ -233,8 +217,17 @@ inline constexpr bool is_scoped_enum_v = is_scoped_enum::value; template > [[nodiscard]] constexpr std::optional enum_cast(std::string_view value) noexcept { static_assert(std::is_enum_v, "magic_enum::enum_cast requires enum type."); + constexpr auto values = detail::values_impl(detail::range_impl()); + constexpr auto count = values.size(); + constexpr auto names = detail::names_impl(std::make_index_sequence{}); - return detail::enum_cast_impl(value); + for (std::size_t i = 0; i < count; ++i) { + if (names[i] == value) { + return values[i]; + } + } + + return std::nullopt; // Invalid value or out of range. } // Obtains enum value from integer value.