From 75c9d9bce53ad603eab3420756d966f805ee59e0 Mon Sep 17 00:00:00 2001 From: neargye Date: Tue, 1 Oct 2019 16:58:55 +0500 Subject: [PATCH] caching entries --- include/magic_enum.hpp | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/include/magic_enum.hpp b/include/magic_enum.hpp index 1787f55..481498d 100644 --- a/include/magic_enum.hpp +++ b/include/magic_enum.hpp @@ -378,6 +378,7 @@ struct enum_traits>> { inline static constexpr std::size_t count = detail::count_v; inline static constexpr std::array values = detail::values(detail::range_v); inline static constexpr std::array names = detail::names(detail::sequence_v); + inline static constexpr std::array, count> entries = detail::entries(detail::sequence_v); [[nodiscard]] static constexpr bool reflected(E value) noexcept { return static_cast(value) >= static_cast(detail::reflected_min_v) && static_cast(value) <= static_cast(detail::reflected_max_v); @@ -519,10 +520,8 @@ template // Obtains pair (value enum, string enum name) sequence. // Returns std::array with std::pair (value enum, string enum name), sorted by enum value. template -[[nodiscard]] constexpr auto enum_entries() noexcept -> detail::enable_if_enum_t, std::string_view>, enum_count()>> { - using D = std::decay_t; - - return detail::entries(detail::sequence_v); +[[nodiscard]] constexpr auto enum_entries() noexcept -> detail::enable_if_enum_t>::entries)&> { + return enum_traits>::entries; } namespace ostream_operators {