21 namespace seqan3::detail
25 template <
typename type_list_t>
26 struct type_list_expander;
48 template <
template <
typename ...>
typename type_list_t,
typename ...args_t>
49 struct type_list_expander<type_list_t<args_t...>>
61 template <
typename fn_t>
63 requires std::invocable<fn_t, std::type_identity<args_t>...>
105 template <
typename unary_predicate_t,
typename ...pack_t>
107 requires (std::predicate<unary_predicate_t, pack_t> && ...)
109 constexpr
bool all_of(unary_predicate_t && fn, pack_t && ...args)
111 return (fn(std::forward<pack_t>(args)) && ...);
148 template <
typename type_list_t,
typename unary_predicate_t>
149 [[nodiscard]] constexpr
bool all_of(unary_predicate_t && fn)
151 requires type_list_specialisation<type_list_t>
154 return type_list_expander<type_list_t>::invoke_on_type_identities([&] (
auto && ...type_identities)
191 template <
typename unary_function_t,
typename ...pack_t>
193 requires (std::invocable<unary_function_t, pack_t> && ...)
195 constexpr
void for_each(unary_function_t && fn, pack_t && ...args)
197 (fn(std::forward<pack_t>(args)), ...);
234 template <
typename type_list_t,
typename unary_function_t>
236 requires type_list_specialisation<type_list_t>
238 constexpr
void for_each(unary_function_t && fn)
240 type_list_expander<type_list_t>::invoke_on_type_identities([&] (
auto && ...type_identities)