mirror of
https://github.com/Neargye/magic_enum.git
synced 2026-01-10 23:44:29 +00:00
add enum_pairs
This commit is contained in:
parent
54fbc2de95
commit
fb262944fc
1 changed files with 19 additions and 0 deletions
|
|
@ -169,6 +169,15 @@ template <typename E, std::size_t... I>
|
|||
return names;
|
||||
}
|
||||
|
||||
template <typename E, std::size_t... I>
|
||||
[[nodiscard]] constexpr decltype(auto) pairs_impl(std::integer_sequence<std::size_t, I...>) noexcept {
|
||||
static_assert(std::is_enum_v<E>, "magic_enum::detail::pairs_impl requires enum type.");
|
||||
constexpr auto values = values_impl<E>(range_impl<E>());
|
||||
constexpr std::array<std::pair<E, std::string_view>, sizeof...(I)> pairs{{{values[I], name_impl<E, values[I]>()}...}};
|
||||
|
||||
return pairs;
|
||||
}
|
||||
|
||||
template<typename T>
|
||||
using enable_if_enum_t = typename std::enable_if<std::is_enum_v<T>>::type;
|
||||
|
||||
|
|
@ -307,6 +316,16 @@ template <typename E, typename = detail::enable_if_enum_t<E>>
|
|||
return names;
|
||||
}
|
||||
|
||||
|
||||
template <typename E, typename = detail::enable_if_enum_t<E>>
|
||||
[[nodiscard]] constexpr decltype(auto) enum_pairs() noexcept {
|
||||
static_assert(std::is_enum_v<E>, "magic_enum::enum_pairs requires enum type.");
|
||||
constexpr auto count = detail::values_impl<E>(detail::range_impl<E>()).size();
|
||||
constexpr auto pairs = detail::pairs_impl<E>(std::make_index_sequence<count>{});
|
||||
|
||||
return pairs;
|
||||
}
|
||||
|
||||
namespace ops {
|
||||
|
||||
template <typename E, typename D = std::decay_t<E>, typename = detail::enable_if_enum_t<E>>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue