13template<
typename Self>
16template<typename F, usize max_arity_in = NumericLimits<usize>::max>
25 template<
typename... Args>
35 template<
typename... Args>
37 constexpr auto operator()(Args&&... args) & ->
decltype(
auto) {
39 return di::invoke(m_f, di::forward<Args>(args)...);
45 template<
typename... Args>
47 constexpr auto operator()(Args&&... args)
const& ->
decltype(
auto) {
49 return di::invoke(m_f, di::forward<Args>(args)...);
55 template<
typename... Args>
57 constexpr auto operator()(Args&&... args) && ->
decltype(
auto) {
59 return di::invoke(di::move(m_f), di::forward<Args>(args)...);
61 return di::move(*this).Base::operator()(di::forward<Args>(args)...);
65 template<
typename... Args>
67 constexpr auto operator()(Args&&... args)
const&& ->
decltype(
auto) {
69 return di::invoke(di::move(m_f), di::forward<Args>(args)...);
71 return di::move(*this).Base::operator()(di::forward<Args>(args)...);
81 if constexpr (
requires { F::max_arity; }) {
88template<
typename Self>
102 constexpr auto operator()(Args&&... args) & {
103 return di::bind_front(
static_cast<Self&
>(*
this), di::forward<Args>(args)...);
108 constexpr auto operator()(Args&&... args)
const& {
109 return di::bind_front(
static_cast<Self const&
>(*
this), di::forward<Args>(args)...);
114 constexpr auto operator()(Args&&... args) && {
115 return di::bind_front(
static_cast<Self&&
>(*
this), di::forward<Args>(args)...);
120 constexpr auto operator()(Args&&... args)
const&& {
121 return di::bind_front(
static_cast<Self const&&
>(*
this), di::forward<Args>(args)...);
126 template<concepts::DecayConstructible F>
131 template<concepts::DecayConstructible F, usize max_arity>
139using curry_ns::Curry;
145using function::Curry;
Definition operations.h:11
constexpr auto deduce_max_arity()
Definition curry.h:80
constexpr auto curry
Definition curry.h:140
Definition zstring_parser.h:9
constexpr auto bind_front(F &&f, Args &&... args)
Definition bind_front.h:68
constexpr auto invoke
Definition invoke.h:100
constexpr auto in_place
Definition in_place.h:8
constexpr auto operator()(F &&function, Constexpr< max_arity >) const
Definition curry.h:132
constexpr auto operator()(F &&function) const
Definition curry.h:127
static constexpr auto max_arity
Definition curry.h:21
CurryImpl(CurryImpl const &)=default
auto operator=(CurryImpl &&) -> CurryImpl &=delete
auto operator=(CurryImpl const &) -> CurryImpl &=delete
CurryImpl(CurryImpl &&)=default
Curry< CurryImpl< F, max_arity_in > > Base
Definition curry.h:18
constexpr CurryImpl(InPlace, Args &&... args)
Definition curry.h:27
auto operator=(Curry const &) -> Curry &=delete
Curry(Curry const &)=default
constexpr auto operator()(Args &&... args) &
Definition curry.h:102
static constexpr auto max_arity()
Definition curry.h:90
auto operator=(Curry &&) -> Curry &=delete
Definition numeric_limits.h:7