7#include "../../detail/bind/tasks.hpp"
33template <
typename F,
typename... Specs>
34constexpr auto bind(F&& f, Specs&&... specs) {
39 std::decay_t<Specs>...
42 std::tuple<std::decay_t<Specs>...>{std::forward<Specs>(specs)...}
59template <
typename T,
typename F,
typename... Specs>
66 std::decay_t<Specs>...
69 std::tuple<std::decay_t<Specs>...> {std::forward<Specs>(specs)...}
73template <
typename T,
typename F,
typename... Specs>
80 std::decay_t<Specs>...
83 std::tuple<std::decay_t<Specs>...> {std::forward<Specs>(specs)...}
87template <
typename T,
typename F>
92 "bind_forward_prev_member(...) requires an explicit receiver binding as its second argument");
95template <
typename T,
typename F,
typename ReceiverSpec,
typename... Specs>
101 std::decay_t<ReceiverSpec>,
103 std::decay_t<Specs>...
106 std::forward<ReceiverSpec>(receiver_spec),
107 std::tuple<std::decay_t<Specs>...> {std::forward<Specs>(specs)...}
116 "bind_member(...) requires an explicit receiver binding as its second argument");
119template <
typename F,
typename ReceiverSpec,
typename... Specs>
120constexpr auto bind_member(F&& f, ReceiverSpec&& receiver_spec, Specs&&... specs) {
125 std::decay_t<ReceiverSpec>,
126 std::decay_t<Specs>...
129 std::forward<ReceiverSpec>(receiver_spec),
130 std::tuple<std::decay_t<Specs>...>{std::forward<Specs>(specs)...}
134template <
typename T,
typename F>
139 "bind_into_member(...) requires an explicit receiver binding as its second argument");
142template <
typename T,
typename F,
typename ReceiverSpec,
typename... Specs>
148 std::decay_t<ReceiverSpec>,
150 std::decay_t<Specs>...
153 std::forward<ReceiverSpec>(receiver_spec),
154 std::tuple<std::decay_t<Specs>...> {std::forward<Specs>(specs)...}
consteval void emit_bind_forward_prev_member_diagnostic()
consteval void emit_bind_member_diagnostic()
consteval void emit_bind_into_member_diagnostic()
consteval void emit_bind_diagnostic()
consteval void emit_bind_forward_prev_diagnostic()
constexpr bool is_adapter_descriptor_v
consteval void emit_bind_into_diagnostic()
constexpr auto bind_forward_prev(F &&f, Specs &&... specs)
constexpr void bind_member(F &&)
constexpr auto bind(F &&f, Specs &&... specs)
Creates a bound_task from a callable and matching argument specs.
constexpr void bind_into_member(F &&)
constexpr void bind_forward_prev_member(F &&)
constexpr auto bind_into(F &&f, Specs &&... specs)
Creates a direct-output task from a callable and matching input specs.
Bound direct-output task composed of a member function, receiver spec, and non-output parameter specs...
Bound executable task composed of a member function, receiver spec, and per-parameter specs.
Bound direct-output task that writes its payload into a provided slot.
Bound executable task composed of a callable and per-parameter specs.