YOrch 1.0.0
Loading...
Searching...
No Matches
concepts.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <concepts> // IWYU pragma: keep
4#include <type_traits> // IWYU pragma: keep
5#include <utility>
6
7#include "../context.hpp"
8#include "../slots/direct_out.hpp"
9#include "../task_adapters/concepts.hpp" // IWYU pragma: keep
10
11namespace yorch {
12
26template <typename Task, typename Ctx, typename Prev = no_prev>
28 requires(Task&& task, exec_context<Ctx, Prev>& ec) {
29 std::forward<Task>(task).invoke_raw(ec);
30 } &&
32 requires(Task&& task, exec_context<Ctx, Prev>& ec) {
33 requires noexcept(std::forward<Task>(task).invoke_raw(ec));
34 };
35
36template <typename Task, typename Ctx, typename Prev = no_prev>
39 requires(
40 Task&& task,
41 exec_context<Ctx, Prev>& ec,
43 {
44 std::forward<Task>(task).invoke_into(
45 ec,
46 direct_out<detail::declared_task_output_t<Task>> {slot})
47 } -> std::same_as<step_result>;
48 requires noexcept(std::forward<Task>(task).invoke_into(
49 ec,
50 direct_out<detail::declared_task_output_t<Task>> {slot}));
51 };
52
53} // namespace yorch
Describes the main execution protocol accepted by run_task(...).
Definition concepts.hpp:27
constexpr bool is_adapter_descriptor_v
Definition adapters.hpp:63
constexpr auto task(F &&f)
Definition core.hpp:207
Lightweight borrowed view used during execution.
Definition context.hpp:187