41 template<
typename F,
template<
typename...>
class List,
typename... Args>
42 constexpr List<Args...>
GetInvokablePartImpl (
int, List<Args...>,
typename std::result_of<F (Args...)>::type* =
nullptr)
47 template<
typename F,
template<
typename...>
class List>
53 template<
typename F,
typename List>
56 template<
typename F,
template<
typename...>
class List,
typename... Args>
62 template<
typename F,
typename List>
65 using RetType_t = decltype (GetInvokablePartImpl<F> (0, List {}));
68 template<
typename F,
typename... Args>
74 template<
template<
typename...>
class List,
typename... Args>
75 constexpr
size_t Length (List<Args...>)
77 return sizeof... (Args);
89 template<
typename F,
typename List>
92 template<
typename F,
template<
typename...>
class List,
typename... Args>
108 template<
typename... Args>
113 return Invoke (invokableList, ignoreList, args...);
116 template<
typename... InvokableArgs,
typename... Rest>
119 return F_ (std::forward<InvokableArgs> (args)...);
constexpr auto GetInvokablePart() -> decltype(GetInvokablePartImpl< F >(0, Typelist< Args...>
typename Dumbifier< T >::Type_t Dumbify
typename std::result_of< T >::type ResultOf_t
constexpr List< Args...> GetInvokablePartImpl(int, List< Args...>, typename std::result_of< F(Args...)>::type *=nullptr)
auto operator()(Args...args) -> typename InvokableResGetter< F, decltype(GetInvokablePart< F, Args...>())>::RetType_t
ResultOf_t< F(Args...)> RetType_t
decltype(GetInvokablePartImpl< F >(0, List{})) RetType_t
constexpr detail::DropImpl< N, List< Args...> >::Result_t Drop(List< Args...>)
detail::Dropper< F > DropArgs(const F &f)
constexpr size_t Length(List< Args...>)