22 namespace seqan3::detail
26 template <
typename type_list_t>
27 struct type_list_expander;
49 template <
template <
typename ...>
typename type_list_t,
typename ...args_t>
50 struct type_list_expander<type_list_t<args_t...>>
62 template <
typename fn_t>
106 template <
typename unary_predicate_t,
typename ...pack_t>
110 constexpr
bool all_of(unary_predicate_t && fn, pack_t && ...args)
112 return (fn(std::forward<pack_t>(args)) && ...);
149 template <
typename type_list_t,
typename unary_predicate_t>
150 [[nodiscard]] constexpr
bool all_of(unary_predicate_t && fn)
152 requires type_list_specialisation<type_list_t>
155 return type_list_expander<type_list_t>::invoke_on_type_identities([&] (
auto && ...type_identities)
192 template <
typename unary_function_t,
typename ...pack_t>
196 constexpr
void for_each(unary_function_t && fn, pack_t && ...args)
198 (fn(std::forward<pack_t>(args)), ...);
235 template <
typename type_list_t,
typename unary_function_t>
237 requires type_list_specialisation<type_list_t>
239 constexpr
void for_each(unary_function_t && fn)
241 type_list_expander<type_list_t>::invoke_on_type_identities([&] (
auto && ...type_identities)