19 template<
typename F,
template<
typename...>
class List,
typename...
Args>
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>
46 template<
typename F,
typename...
Args>
52 template<
template<
typename...>
class List,
typename...
Args>
55 return sizeof... (
Args);
67 template<
typename F,
typename List>
70 template<
typename F,
template<
typename...>
class List,
typename...
Args>
86 template<
typename...
Args>
97 return F_ (std::forward<InvokableArgs> (
args)...);
auto operator()(Args... args) -> typename InvokableResGetter< F, decltype(GetInvokablePart< F, Args... >())>::RetType_t
constexpr List< Args... > GetInvokablePartImpl(int, List< Args... >, typename std::result_of< F(Args...)>::type *=nullptr)
typename Dumbifier< T >::Type_t Dumbify
constexpr size_t Length(List< Args... >)
constexpr auto GetInvokablePart() -> decltype(GetInvokablePartImpl< F >(0, Typelist< Args... > {}))
Container< T > Filter(const Container< T > &c, F f)
std::tuple_element_t< 0, detail::CallTypeGetter_t< F > > RetType_t
constexpr List< T... > Tail(List< H, T... >)
detail::Dropper< F > DropArgs(const F &f)
constexpr detail::DropImpl< N, List< Args... > >::Result_t Drop(List< Args... >)
constexpr List Reverse(List<>)
std::result_of_t< F(Args...)> RetType_t