30 template <std::
size_t N>
36 template <
typename... Ts>
38 using Ts::operator()...;
41 template <
typename... Ts>
45 requires std::is_enum_v<
decltype(Enum)>
48 template <
auto... Enums,
typename T,
typename Callable>
49 requires(std::is_enum_v<T> && (std::is_enum_v<
decltype(Enums)> && ...))
50 constexpr void select_enums(T value, Callable&& handler)
noexcept(
52 auto tuple = std::forward_as_tuple(std::forward<Callable>(handler));
53 auto check_value = [&, found =
false]<
auto Enum>(enum_constant<Enum>)
mutable {
54 if (!found && value == Enum) {
56 []<
typename InnerCallable>(
57 InnerCallable&& handler) { std::forward<InnerCallable>(handler)(enum_constant<Enum>{}); },
64 (check_value(enum_constant<Enums>{}), ...);
Definition type_traits.hpp:46
Definition type_traits.hpp:37
Definition type_traits.hpp:31