|
template<typename F , typename V > |
using | magic_enum::detail::invoke_result_t = typename invoke_result< F, V >::type |
|
template<typename E , enum_subtype S, typename Result , typename F , typename D = std::decay_t<E>, typename R = typename decltype(result_type<D, S, Result, F>())::type> |
using | magic_enum::detail::result_t = std::enable_if_t< std::is_enum_v< D > &&!std::is_same_v< R, nonesuch >, R > |
|
|
template<typename E , enum_subtype S, typename F , std::size_t... I> |
constexpr auto | magic_enum::detail::common_invocable (std::index_sequence< I... >) noexcept |
|
template<typename R , typename E , enum_subtype S, typename F , typename Def > |
constexpr decltype(auto) | magic_enum::detail::constexpr_switch (F &&f, E value, Def &&def) |
|
template<std::size_t I, std::size_t End, typename R , typename E , enum_subtype S, typename F , typename Def > |
constexpr decltype(auto) | magic_enum::detail::constexpr_switch_impl (F &&f, E value, Def &&def) |
|
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, 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) | magic_enum::enum_switch (F &&f, E value, Result &&result) |
|
template<typename E , enum_subtype S, typename Result , typename F > |
constexpr auto | magic_enum::detail::result_type () noexcept |
|