template<typename Function, typename First,
typename Indices=index_range<1u, function_traits<Function>::arity>>
auto curried(Function&& func, First first)
-> decltype(curried_impl(std::forward<Function>(func), std::forward<First>(first), Indices()));