Namespaces | Classes | Typedefs | Functions | Variables
magic_enum Namespace Reference

Namespaces

 bitwise_operators
 
 containers
 
 customize
 
 detail
 
 iostream_operators
 
 istream_operators
 
 ostream_operators
 

Classes

struct  is_scoped_enum
 
struct  is_unscoped_enum
 
struct  underlying_type
 

Typedefs

using char_type = string_view::value_type
 
template<typename T >
using Enum = detail::enum_concept< T >
 
template<auto V>
using enum_constant = detail::enum_constant< V >
 
template<typename T >
using underlying_type_t = typename underlying_type< T >::type
 

Functions

template<typename E , detail::enum_subtype S = detail::subtype_v<E>, typename BinaryPredicate = std::equal_to<>>
constexpr auto enum_cast (string_view value, [[maybe_unused]] BinaryPredicate p={}) noexcept(detail::is_nothrow_invocable< BinaryPredicate >()) -> detail::enable_if_t< E, optional< std::decay_t< E >>, BinaryPredicate >
 
template<typename E , detail::enum_subtype S = detail::subtype_v<E>>
constexpr auto enum_cast (underlying_type_t< E > value) noexcept -> detail::enable_if_t< E, optional< std::decay_t< E >>>
 
template<typename E , detail::enum_subtype S = detail::subtype_v<E>>
constexpr auto enum_contains (E value) noexcept -> detail::enable_if_t< E, bool >
 
template<typename E , detail::enum_subtype S = detail::subtype_v<E>, typename BinaryPredicate = std::equal_to<>>
constexpr auto enum_contains (string_view value, BinaryPredicate p={}) noexcept(detail::is_nothrow_invocable< BinaryPredicate >()) -> detail::enable_if_t< E, bool, BinaryPredicate >
 
template<typename E , detail::enum_subtype S = detail::subtype_v<E>>
constexpr auto enum_contains (underlying_type_t< E > value) noexcept -> detail::enable_if_t< E, bool >
 
template<typename E , detail::enum_subtype S = detail::subtype_v<E>>
constexpr auto enum_count () noexcept -> detail::enable_if_t< E, std::size_t >
 
template<typename E , detail::enum_subtype S = detail::subtype_v<E>>
constexpr auto enum_entries () noexcept -> detail::enable_if_t< E, detail::entries_t< E, S >>
 
template<typename E , typename BinaryPredicate = std::equal_to<>>
constexpr auto enum_flags_cast (string_view value, [[maybe_unused]] BinaryPredicate p={}) noexcept(detail::is_nothrow_invocable< BinaryPredicate >()) -> detail::enable_if_t< E, optional< std::decay_t< E >>, BinaryPredicate >
 
template<typename E >
constexpr auto enum_flags_cast (underlying_type_t< E > value) noexcept -> detail::enable_if_t< E, optional< std::decay_t< E >>>
 
template<typename E >
constexpr auto enum_flags_contains (E value) noexcept -> detail::enable_if_t< E, bool >
 
template<typename E , typename BinaryPredicate = std::equal_to<>>
constexpr auto enum_flags_contains (string_view value, BinaryPredicate p={}) noexcept(detail::is_nothrow_invocable< BinaryPredicate >()) -> detail::enable_if_t< E, bool, BinaryPredicate >
 
template<typename E >
constexpr auto enum_flags_contains (underlying_type_t< E > value) noexcept -> detail::enable_if_t< E, bool >
 
template<typename E >
auto enum_flags_name (E value, char_type sep=static_cast< char_type >('|')) -> detail::enable_if_t< E, string >
 
template<typename E >
constexpr auto enum_flags_test (E flags, E flag) noexcept -> detail::enable_if_t< E, bool >
 
template<typename E >
constexpr auto enum_flags_test_any (E lhs, E rhs) noexcept -> detail::enable_if_t< E, bool >
 
template<typename E , detail::enum_subtype S = detail::subtype_v<E>, typename F , detail::enable_if_t< E, int > = 0>
constexpr auto enum_for_each (F &&f)
 
template<typename... Es>
constexpr auto enum_fuse (Es... values) noexcept
 
template<auto V, detail::enum_subtype S = detail::subtype_v<std::decay_t<decltype(V)>>>
constexpr auto enum_index () noexcept -> detail::enable_if_t< decltype(V), std::size_t >
 
template<typename E , detail::enum_subtype S = detail::subtype_v<E>>
constexpr auto enum_index (E value) noexcept -> detail::enable_if_t< E, optional< std::size_t >>
 
template<typename E >
constexpr auto enum_integer (E value) noexcept -> detail::enable_if_t< E, underlying_type_t< E >>
 
template<auto V>
constexpr auto enum_name () noexcept -> detail::enable_if_t< decltype(V), string_view >
 
template<typename E , detail::enum_subtype S = detail::subtype_v<E>>
constexpr auto enum_name (E value) noexcept -> detail::enable_if_t< E, string_view >
 
template<typename E , detail::enum_subtype S = detail::subtype_v<E>>
constexpr auto enum_names () noexcept -> detail::enable_if_t< E, detail::names_t< E, S >>
 
template<typename E , detail::enum_subtype S = detail::subtype_v<E>>
constexpr auto enum_next_value (E value, std::ptrdiff_t n=1) noexcept -> detail::enable_if_t< E, optional< std::decay_t< E >>>
 
template<typename E , detail::enum_subtype S = detail::subtype_v<E>>
constexpr auto enum_next_value_circular (E value, std::ptrdiff_t n=1) noexcept -> detail::enable_if_t< E, std::decay_t< E >>
 
template<typename E , detail::enum_subtype S = detail::subtype_v<E>>
constexpr auto enum_prev_value (E value, std::ptrdiff_t n=1) noexcept -> detail::enable_if_t< E, optional< std::decay_t< E >>>
 
template<typename E , detail::enum_subtype S = detail::subtype_v<E>>
constexpr auto enum_prev_value_circular (E value, std::ptrdiff_t n=1) noexcept -> detail::enable_if_t< E, std::decay_t< E >>
 
template<typename E , detail::enum_subtype S = detail::subtype_v<E>>
constexpr auto enum_reflected (E value) noexcept -> detail::enable_if_t< E, bool >
 
template<typename E , detail::enum_subtype S = detail::subtype_v<E>>
constexpr auto enum_reflected (underlying_type_t< E > value) noexcept -> detail::enable_if_t< E, bool >
 
template<typename Result = detail::default_result_type, typename E , detail::enum_subtype S = detail::subtype_v<E>, typename F , typename R = detail::result_t<E, S, Result, F>>
constexpr decltype(auto) enum_switch (F &&f, E value)
 
template<typename Result , typename E , detail::enum_subtype S = detail::subtype_v<E>, typename F , typename R = detail::result_t<E, S, Result, F>>
constexpr decltype(auto) enum_switch (F &&f, E value, Result &&result)
 
template<typename E >
constexpr auto enum_type_name () noexcept -> detail::enable_if_t< E, string_view >
 
template<typename E >
constexpr auto enum_underlying (E value) noexcept -> detail::enable_if_t< E, underlying_type_t< E >>
 
template<typename E , std::size_t I, detail::enum_subtype S = detail::subtype_v<E>>
constexpr auto enum_value () noexcept -> detail::enable_if_t< E, std::decay_t< E >>
 
template<typename E , detail::enum_subtype S = detail::subtype_v<E>>
constexpr auto enum_value (std::size_t index) noexcept -> detail::enable_if_t< E, std::decay_t< E >>
 
template<typename E , detail::enum_subtype S = detail::subtype_v<E>>
constexpr auto enum_values () noexcept -> detail::enable_if_t< E, detail::values_t< E, S >>
 

Variables

template<bool AsFlags = true>
constexpr auto as_common = AsFlags ? detail::enum_subtype::common : detail::enum_subtype::flags
 
template<bool AsFlags = true>
constexpr auto as_flags = AsFlags ? detail::enum_subtype::flags : detail::enum_subtype::common
 
constexpr auto case_insensitive = detail::case_insensitive<>{}
 
constexpr bool is_magic_enum_supported = detail::supported<void>::value
 
template<typename T >
constexpr bool is_scoped_enum_v = is_scoped_enum<T>::value
 
template<typename T >
constexpr bool is_unscoped_enum_v = is_unscoped_enum<T>::value
 

Typedef Documentation

◆ char_type

using magic_enum::char_type = typedef string_view::value_type

Definition at line 149 of file magic_enum.hpp.

◆ Enum

template<typename T >
using magic_enum::Enum = typedef detail::enum_concept<T>

Definition at line 1144 of file magic_enum.hpp.

◆ enum_constant

template<auto V>
using magic_enum::enum_constant = typedef detail::enum_constant<V>

Definition at line 1171 of file magic_enum.hpp.

◆ underlying_type_t

template<typename T >
using magic_enum::underlying_type_t = typedef typename underlying_type<T>::type

Definition at line 1168 of file magic_enum.hpp.

Function Documentation

◆ enum_cast() [1/2]

template<typename E , detail::enum_subtype S = detail::subtype_v<E>, typename BinaryPredicate = std::equal_to<>>
constexpr auto magic_enum::enum_cast ( string_view  value,
[[maybe_unused] ] BinaryPredicate  p = {} 
) -> detail::enable_if_t<E, optional<std::decay_t<E>>, BinaryPredicate>
constexprnoexcept

Definition at line 1373 of file magic_enum.hpp.

◆ enum_cast() [2/2]

template<typename E , detail::enum_subtype S = detail::subtype_v<E>>
constexpr auto magic_enum::enum_cast ( underlying_type_t< E >  value) -> detail::enable_if_t<E, optional<std::decay_t<E>>>
constexprnoexcept

Definition at line 1344 of file magic_enum.hpp.

◆ enum_contains() [1/3]

template<typename E , detail::enum_subtype S = detail::subtype_v<E>>
constexpr auto magic_enum::enum_contains ( value) -> detail::enable_if_t<E, bool>
constexprnoexcept

Definition at line 1396 of file magic_enum.hpp.

◆ enum_contains() [2/3]

template<typename E , detail::enum_subtype S = detail::subtype_v<E>, typename BinaryPredicate = std::equal_to<>>
constexpr auto magic_enum::enum_contains ( string_view  value,
BinaryPredicate  p = {} 
) -> detail::enable_if_t<E, bool, BinaryPredicate>
constexprnoexcept

Definition at line 1422 of file magic_enum.hpp.

◆ enum_contains() [3/3]

template<typename E , detail::enum_subtype S = detail::subtype_v<E>>
constexpr auto magic_enum::enum_contains ( underlying_type_t< E >  value) -> detail::enable_if_t<E, bool>
constexprnoexcept

Definition at line 1414 of file magic_enum.hpp.

◆ enum_count()

template<typename E , detail::enum_subtype S = detail::subtype_v<E>>
constexpr auto magic_enum::enum_count ( ) -> detail::enable_if_t<E, std::size_t>
constexprnoexcept

Definition at line 1184 of file magic_enum.hpp.

◆ enum_entries()

template<typename E , detail::enum_subtype S = detail::subtype_v<E>>
constexpr auto magic_enum::enum_entries ( ) -> detail::enable_if_t<E, detail::entries_t<E, S>>
constexprnoexcept

Definition at line 1331 of file magic_enum.hpp.

◆ enum_flags_cast() [1/2]

template<typename E , typename BinaryPredicate = std::equal_to<>>
constexpr auto magic_enum::enum_flags_cast ( string_view  value,
[[maybe_unused] ] BinaryPredicate  p = {} 
) -> detail::enable_if_t<E, optional<std::decay_t<E>>, BinaryPredicate>
constexprnoexcept

Definition at line 134 of file magic_enum_flags.hpp.

◆ enum_flags_cast() [2/2]

template<typename E >
constexpr auto magic_enum::enum_flags_cast ( underlying_type_t< E >  value) -> detail::enable_if_t<E, optional<std::decay_t<E>>>
constexprnoexcept

Definition at line 98 of file magic_enum_flags.hpp.

◆ enum_flags_contains() [1/3]

template<typename E >
constexpr auto magic_enum::enum_flags_contains ( value) -> detail::enable_if_t<E, bool>
constexprnoexcept

Definition at line 171 of file magic_enum_flags.hpp.

◆ enum_flags_contains() [2/3]

template<typename E , typename BinaryPredicate = std::equal_to<>>
constexpr auto magic_enum::enum_flags_contains ( string_view  value,
BinaryPredicate  p = {} 
) -> detail::enable_if_t<E, bool, BinaryPredicate>
constexprnoexcept

Definition at line 188 of file magic_enum_flags.hpp.

◆ enum_flags_contains() [3/3]

template<typename E >
constexpr auto magic_enum::enum_flags_contains ( underlying_type_t< E >  value) -> detail::enable_if_t<E, bool>
constexprnoexcept

Definition at line 180 of file magic_enum_flags.hpp.

◆ enum_flags_name()

template<typename E >
auto magic_enum::enum_flags_name ( value,
char_type  sep = static_cast<char_type>('|') 
) -> detail::enable_if_t<E, string>

Definition at line 67 of file magic_enum_flags.hpp.

◆ enum_flags_test()

template<typename E >
constexpr auto magic_enum::enum_flags_test ( flags,
flag 
) -> detail::enable_if_t<E, bool>
constexprnoexcept

Definition at line 197 of file magic_enum_flags.hpp.

◆ enum_flags_test_any()

template<typename E >
constexpr auto magic_enum::enum_flags_test_any ( lhs,
rhs 
) -> detail::enable_if_t<E, bool>
constexprnoexcept

Definition at line 206 of file magic_enum_flags.hpp.

◆ enum_for_each()

template<typename E , detail::enum_subtype S = detail::subtype_v<E>, typename F , detail::enable_if_t< E, int > = 0>
constexpr auto magic_enum::enum_for_each ( F &&  f)
constexpr

Definition at line 67 of file magic_enum_utility.hpp.

◆ enum_fuse()

template<typename... Es>
constexpr auto magic_enum::enum_fuse ( Es...  values)
constexprnoexcept

Definition at line 75 of file magic_enum_fuse.hpp.

◆ enum_index() [1/2]

template<auto V, detail::enum_subtype S = detail::subtype_v<std::decay_t<decltype(V)>>>
constexpr auto magic_enum::enum_index ( ) -> detail::enable_if_t<decltype(V), std::size_t>
constexprnoexcept

Definition at line 1278 of file magic_enum.hpp.

◆ enum_index() [2/2]

template<typename E , detail::enum_subtype S = detail::subtype_v<E>>
constexpr auto magic_enum::enum_index ( value) -> detail::enable_if_t<E, optional<std::size_t>>
constexprnoexcept

Definition at line 1238 of file magic_enum.hpp.

◆ enum_integer()

template<typename E >
constexpr auto magic_enum::enum_integer ( value) -> detail::enable_if_t<E, underlying_type_t<E>>
constexprnoexcept

Definition at line 1225 of file magic_enum.hpp.

◆ enum_name() [1/2]

template<auto V>
constexpr auto magic_enum::enum_name ( ) -> detail::enable_if_t<decltype(V), string_view>
constexprnoexcept

Definition at line 1290 of file magic_enum.hpp.

◆ enum_name() [2/2]

template<typename E , detail::enum_subtype S = detail::subtype_v<E>>
constexpr auto magic_enum::enum_name ( value) -> detail::enable_if_t<E, string_view>
constexprnoexcept

Definition at line 1300 of file magic_enum.hpp.

◆ enum_names()

template<typename E , detail::enum_subtype S = detail::subtype_v<E>>
constexpr auto magic_enum::enum_names ( ) -> detail::enable_if_t<E, detail::names_t<E, S>>
constexprnoexcept

Definition at line 1322 of file magic_enum.hpp.

◆ enum_next_value()

template<typename E , detail::enum_subtype S = detail::subtype_v<E>>
constexpr auto magic_enum::enum_next_value ( value,
std::ptrdiff_t  n = 1 
) -> detail::enable_if_t<E, optional<std::decay_t<E>>>
constexprnoexcept

Definition at line 81 of file magic_enum_utility.hpp.

◆ enum_next_value_circular()

template<typename E , detail::enum_subtype S = detail::subtype_v<E>>
constexpr auto magic_enum::enum_next_value_circular ( value,
std::ptrdiff_t  n = 1 
) -> detail::enable_if_t<E, std::decay_t<E>>
constexprnoexcept

Definition at line 95 of file magic_enum_utility.hpp.

◆ enum_prev_value()

template<typename E , detail::enum_subtype S = detail::subtype_v<E>>
constexpr auto magic_enum::enum_prev_value ( value,
std::ptrdiff_t  n = 1 
) -> detail::enable_if_t<E, optional<std::decay_t<E>>>
constexprnoexcept

Definition at line 109 of file magic_enum_utility.hpp.

◆ enum_prev_value_circular()

template<typename E , detail::enum_subtype S = detail::subtype_v<E>>
constexpr auto magic_enum::enum_prev_value_circular ( value,
std::ptrdiff_t  n = 1 
) -> detail::enable_if_t<E, std::decay_t<E>>
constexprnoexcept

Definition at line 123 of file magic_enum_utility.hpp.

◆ enum_reflected() [1/2]

template<typename E , detail::enum_subtype S = detail::subtype_v<E>>
constexpr auto magic_enum::enum_reflected ( value) -> detail::enable_if_t<E, bool>
constexprnoexcept

Definition at line 1444 of file magic_enum.hpp.

◆ enum_reflected() [2/2]

template<typename E , detail::enum_subtype S = detail::subtype_v<E>>
constexpr auto magic_enum::enum_reflected ( underlying_type_t< E >  value) -> detail::enable_if_t<E, bool>
constexprnoexcept

Definition at line 1430 of file magic_enum.hpp.

◆ enum_switch() [1/2]

template<typename Result = detail::default_result_type, typename E , detail::enum_subtype S = detail::subtype_v<E>, typename F , typename R = detail::result_t<E, S, Result, F>>
constexpr decltype(auto) magic_enum::enum_switch ( F &&  f,
value 
)
constexpr

Definition at line 137 of file magic_enum_switch.hpp.

◆ enum_switch() [2/2]

template<typename Result , typename E , detail::enum_subtype S = detail::subtype_v<E>, typename F , typename R = detail::result_t<E, S, Result, F>>
constexpr decltype(auto) magic_enum::enum_switch ( F &&  f,
value,
Result &&  result 
)
constexpr

Definition at line 161 of file magic_enum_switch.hpp.

◆ enum_type_name()

template<typename E >
constexpr auto magic_enum::enum_type_name ( ) -> detail::enable_if_t<E, string_view>
constexprnoexcept

Definition at line 1175 of file magic_enum.hpp.

◆ enum_underlying()

template<typename E >
constexpr auto magic_enum::enum_underlying ( value) -> detail::enable_if_t<E, underlying_type_t<E>>
constexprnoexcept

Definition at line 1231 of file magic_enum.hpp.

◆ enum_value() [1/2]

template<typename E , std::size_t I, detail::enum_subtype S = detail::subtype_v<E>>
constexpr auto magic_enum::enum_value ( ) -> detail::enable_if_t<E, std::decay_t<E>>
constexprnoexcept

Definition at line 1206 of file magic_enum.hpp.

◆ enum_value() [2/2]

template<typename E , detail::enum_subtype S = detail::subtype_v<E>>
constexpr auto magic_enum::enum_value ( std::size_t  index) -> detail::enable_if_t<E, std::decay_t<E>>
constexprnoexcept

Definition at line 1191 of file magic_enum.hpp.

◆ enum_values()

template<typename E , detail::enum_subtype S = detail::subtype_v<E>>
constexpr auto magic_enum::enum_values ( ) -> detail::enable_if_t<E, detail::values_t<E, S>>
constexprnoexcept

Definition at line 1216 of file magic_enum.hpp.

Variable Documentation

◆ as_common

template<bool AsFlags = true>
constexpr auto magic_enum::as_common = AsFlags ? detail::enum_subtype::common : detail::enum_subtype::flags
inlineconstexpr

Definition at line 1462 of file magic_enum.hpp.

◆ as_flags

template<bool AsFlags = true>
constexpr auto magic_enum::as_flags = AsFlags ? detail::enum_subtype::flags : detail::enum_subtype::common
inlineconstexpr

Definition at line 1459 of file magic_enum.hpp.

◆ case_insensitive

constexpr auto magic_enum::case_insensitive = detail::case_insensitive<>{}
inlineconstexpr

Definition at line 1339 of file magic_enum.hpp.

◆ is_magic_enum_supported

constexpr bool magic_enum::is_magic_enum_supported = detail::supported<void>::value
inlineconstexpr

Definition at line 1141 of file magic_enum.hpp.

◆ is_scoped_enum_v

template<typename T >
constexpr bool magic_enum::is_scoped_enum_v = is_scoped_enum<T>::value
inlineconstexpr

Definition at line 1160 of file magic_enum.hpp.

◆ is_unscoped_enum_v

template<typename T >
constexpr bool magic_enum::is_unscoped_enum_v = is_unscoped_enum<T>::value
inlineconstexpr

Definition at line 1152 of file magic_enum.hpp.



magic_enum
Author(s):
autogenerated on Fri Feb 21 2025 03:20:19