MCPcopy Create free account
hub / github.com/Neargye/magic_enum / enum_switch

Function enum_switch

include/magic_enum/magic_enum_switch.hpp:137–153  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

135
136template <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>>
137constexpr decltype(auto) enum_switch(F&& f, E value) {
138 using D = std::decay_t<E>;
139 static_assert(std::is_enum_v<D>, "magic_enum::enum_switch requires enum type.");
140 static_assert(detail::is_reflected_v<D, S>, "magic_enum requires enum implementation and valid max and min.");
141
142#if defined(MAGIC_ENUM_ENABLE_HASH) || defined(MAGIC_ENUM_ENABLE_HASH_SWITCH)
143 return detail::constexpr_switch<&detail::values_v<D, S>, detail::case_call_t::value>(
144 std::forward<F>(f),
145 value,
146 detail::default_result_type_lambda<R>);
147#else
148 return detail::constexpr_switch<R, D, S>(
149 std::forward<F>(f),
150 value,
151 detail::default_result_type_lambda<R>);
152#endif
153}
154
155template <typename Result = detail::default_result_type, detail::enum_subtype S, typename E, typename F, typename R = detail::result_t<E, S, Result, F>>
156constexpr decltype(auto) enum_switch(F&& f, E value) {

Callers 1

mainFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected