12template<
typename Self>
15template<typename F, usize max_arity_in = NumericLimits<usize>::max>
24 template<
typename... Args>
34 template<
typename... Args>
36 constexpr auto operator()(Args&&... args) & ->
decltype(
auto) {
38 return di::invoke(m_f, di::forward<Args>(args)...);
44 template<
typename... Args>
46 constexpr auto operator()(Args&&... args)
const& ->
decltype(
auto) {
48 return di::invoke(m_f, di::forward<Args>(args)...);
54 template<
typename... Args>
56 constexpr auto operator()(Args&&... args) && ->
decltype(
auto) {
58 return di::invoke(di::move(m_f), di::forward<Args>(args)...);
60 return di::move(*this).Base::operator()(di::forward<Args>(args)...);
64 template<
typename... Args>
66 constexpr auto operator()(Args&&... args)
const&& ->
decltype(
auto) {
68 return di::invoke(di::move(m_f), di::forward<Args>(args)...);
70 return di::move(*this).Base::operator()(di::forward<Args>(args)...);
80 if constexpr (
requires { F::max_arity; }) {
87template<
typename Self>
103 constexpr auto operator()(Args&&... args) & {
104 return di::bind_back(
static_cast<Self&
>(*
this), di::forward<Args>(args)...);
109 constexpr auto operator()(Args&&... args)
const& {
110 return di::bind_back(
static_cast<Self const&
>(*
this), di::forward<Args>(args)...);
115 constexpr auto operator()(Args&&... args) && {
116 return di::bind_back(
static_cast<Self&&
>(*
this), di::forward<Args>(args)...);
121 constexpr auto operator()(Args&&... args)
const&& {
122 return di::bind_back(
static_cast<Self const&&
>(*
this), di::forward<Args>(args)...);
127 template<concepts::DecayConstructible F>
132 template<concepts::DecayConstructible F, usize max_arity>
140using curry_back_ns::CurryBack;
146using function::CurryBack;
Definition operations.h:11
Definition curry_back.h:11
constexpr auto deduce_max_arity()
Definition curry_back.h:79
constexpr auto curry_back
Definition curry_back.h:141
Definition zstring_parser.h:9
constexpr auto invoke
Definition invoke.h:100
constexpr auto bind_back(F &&f, Args &&... args)
Definition bind_back.h:68
constexpr auto in_place
Definition in_place.h:8
Definition curry_back.h:126
constexpr auto operator()(F &&function) const
Definition curry_back.h:128
constexpr auto operator()(F &&function, Constexpr< max_arity >) const
Definition curry_back.h:133
Definition curry_back.h:16
CurryBackImpl(CurryBackImpl &&)=default
auto operator=(CurryBackImpl &&) -> CurryBackImpl &=delete
auto operator=(CurryBackImpl const &) -> CurryBackImpl &=delete
CurryBackImpl(CurryBackImpl const &)=default
CurryBack< CurryBackImpl< F, max_arity_in > > Base
Definition curry_back.h:17
static constexpr auto max_arity
Definition curry_back.h:20
constexpr CurryBackImpl(InPlace, Args &&... args)
Definition curry_back.h:26
Definition curry_back.h:88
auto operator=(CurryBack const &) -> CurryBack &=delete
constexpr auto operator()(Args &&... args) &
Definition curry_back.h:103
CurryBack(CurryBack &&)=default
CurryBack(CurryBack const &)=default
auto operator=(CurryBack &&) -> CurryBack &=delete
Definition numeric_limits.h:7