26 template <
typename function_t>
27 struct function_traits;
47 template <
typename return_t,
typename ...args_t>
48 struct function_traits<
std::function<return_t(args_t...)>>
51 static constexpr
size_t argument_count =
sizeof...(args_t);
59 template <
size_t index>
61 requires (index < argument_count)
68 template <typename function_t>
70 struct function_traits<function_t> : function_traits<decltype(std::function{std::declval<function_t>()})>
75 namespace seqan3::detail
85 template <
typename ...invocable_ts>
86 struct multi_invocable : invocable_ts...
89 using invocable_ts::operator()...;
93 template <
typename ...invocable_ts>
94 multi_invocable(invocable_ts...) -> multi_invocable<invocable_ts...>;