6#include "../detail/executor/result.hpp"
7#include "../detail/task_adapters/traits.hpp"
8#include "../slots/direct_out.hpp"
31template <
typename Task,
typename Ctx,
typename Prev = no_prev>
32 requires executable_task<Task, Ctx, Prev>
35 noexcept(std::forward<Task>(
task).invoke_raw(ec)) &&
38 std::forward<Task>(
task).invoke_raw(ec)))))
43 "Task raw_result_type must match invoke_raw(exec_context<...>&) return type");
45 if constexpr (std::is_void_v<raw_result_t>) {
46 std::forward<Task>(
task).invoke_raw(ec);
50 std::forward<Task>(
task).invoke_raw(ec)
71template <
typename Task,
typename Ctx,
typename Prev = no_prev>
72 requires executable_direct_output_task<Task, Ctx, Prev>
77 noexcept(
noexcept(std::forward<Task>(
task).invoke_into(ec, out)))
79 const auto step = std::forward<Task>(
task).invoke_into(ec, out);
83 }
else if (out.has_value()) {
#define YORCH_ASSERT(condition)
typename declared_task_output< Task >::type declared_task_output_t
decltype(std::declval< Task >().invoke_raw(std::declval< exec_context< Ctx, Prev > & >())) raw_task_result_t
constexpr step_result normalize_task_result(R &&r)
Normalizes a raw task return into scheduler-facing step_result.
constexpr bool is_adapter_descriptor_v
constexpr step_result run_task_into(Task &&task, exec_context< Ctx, Prev > &ec, direct_out< detail::declared_task_output_t< Task > > out) noexcept(noexcept(std::forward< Task >(task).invoke_into(ec, out)))
Executes a direct-output task against the provided execution context.
constexpr step_result run_task(Task &&task, exec_context< Ctx, Prev > &ec) noexcept(noexcept(std::forward< Task >(task).invoke_raw(ec)) &&(std::is_void_v< detail::raw_task_result_t< Task &&, Ctx, Prev > >||noexcept(detail::normalize_task_result(std::forward< Task >(task).invoke_raw(ec)))))
Executes a ready-to-run task against the provided execution context.
constexpr auto task(F &&f)
Output sink passed to direct-output tasks.
Lightweight borrowed view used during execution.
Represents the basic outcome of a task step.
static constexpr step_result success() noexcept
Creates a successful result.