19 template<
typename F,
template<
typename...>
class List,
typename... Args>
20 constexpr List<Args...>
GetInvokablePartImpl (
int, List<Args...>,
typename std::result_of<F (Args...)>::type* =
nullptr)
25 template<
typename F,
template<
typename...>
class List>
31 template<
typename F,
typename List>
34 template<
typename F,
template<
typename...>
class List,
typename... Args>
40 template<
typename F,
typename List>
43 using RetType_t = decltype (GetInvokablePartImpl<F> (0, List {}));
46 template<
typename F,
typename... Args>
52 template<
template<
typename...>
class List,
typename... Args>
53 constexpr
size_t Length (List<Args...>)
55 return sizeof... (Args);
67 template<
typename F,
typename List>
70 template<
typename F,
template<
typename...>
class List,
typename... Args>
73 using RetType_t = std::result_of_t<F (Args...)>;
86 template<
typename... Args>
91 return Invoke (invokableList, ignoreList, args...);
94 template<
typename... InvokableArgs,
typename... Rest>
97 return F_ (std::forward<InvokableArgs> (args)...);