YOrch
1.0.0
Loading...
Searching...
No Matches
concepts.hpp
Go to the documentation of this file.
1
#pragma once
2
3
#include <type_traits>
4
5
#include "../../bind/adapters.hpp"
// IWYU pragma: keep
6
#include "../../detail/bind/traits.hpp"
// IWYU pragma: keep
7
#include "../task/traits.hpp"
// IWYU pragma: keep
8
#include "../../plan/traits.hpp"
// IWYU pragma: keep
9
#include "../../task_tree/policies.hpp"
// IWYU pragma: keep
10
11
namespace
yorch::detail
{
12
13
template
<
typename
Task>
14
concept
task_object_argument
=
15
(!
bind_callable<Task>
) ||
plannable_task
<std::remove_cvref_t<Task>>;
16
17
template
<
typename
F>
18
concept
callable_task_argument
=
19
bind_callable<F>
&& !
plannable_task<std::remove_cvref_t<F>
>;
20
21
template
<
typename
Task>
22
concept
direct_output_task_object_argument
=
23
task_object_argument<Task>
&&
24
task_uses_direct_output_protocol_v<Task>
;
25
26
template
<
typename
Task>
27
concept
ordinary_task_object_argument
=
28
task_object_argument<Task>
&&
29
!
direct_output_task_object_argument<Task>
;
30
31
template
<
typename
F>
32
concept
ordinary_callable_task_argument
=
33
callable_task_argument<F>
&&
34
ordinary_bind_callable<F>
;
35
36
template
<
typename
F>
37
concept
direct_output_callable_task_argument
=
38
callable_task_argument<F>
&&
39
inferable_direct_output_callable<F>
;
40
41
template
<
typename
F>
42
concept
forward_prev_callable_task_argument
=
43
callable_task_argument<F>
&&
44
inferable_forward_prev_callable<F>
;
45
46
template
<
typename
F>
47
concept
ordinary_member_callable_task_argument
=
48
callable_task_argument<F>
&&
49
ordinary_member_bind_callable<F>
;
50
51
template
<
typename
F>
52
concept
forward_prev_member_callable_task_argument
=
53
callable_task_argument<F>
&&
54
ordinary_member_bind_callable<F>
;
55
56
template
<
typename
F>
57
concept
direct_output_member_callable_task_argument
=
58
callable_task_argument<F>
&&
59
inferable_direct_output_member_callable<F>
;
60
61
template
<
typename
T>
62
concept
fanout_policy_or_chain
=
63
fanout_policy<T>
||
adapter_chain_like<T>
;
64
65
}
// namespace yorch::detail
yorch::detail::adapter_chain_like
Definition
adapters.hpp:81
yorch::detail::bind_callable
Definition
traits.hpp:185
yorch::detail::callable_task_argument
Definition
concepts.hpp:18
yorch::detail::direct_output_callable_task_argument
Definition
concepts.hpp:37
yorch::detail::direct_output_member_callable_task_argument
Definition
concepts.hpp:57
yorch::detail::direct_output_task_object_argument
Definition
concepts.hpp:22
yorch::detail::fanout_policy_or_chain
Definition
concepts.hpp:62
yorch::detail::fanout_policy
Definition
policies.hpp:53
yorch::detail::forward_prev_callable_task_argument
Definition
concepts.hpp:42
yorch::detail::forward_prev_member_callable_task_argument
Definition
concepts.hpp:52
yorch::detail::inferable_direct_output_callable
Definition
traits.hpp:198
yorch::detail::inferable_direct_output_member_callable
Definition
traits.hpp:215
yorch::detail::inferable_forward_prev_callable
Definition
traits.hpp:211
yorch::detail::ordinary_bind_callable
Definition
traits.hpp:205
yorch::detail::ordinary_callable_task_argument
Definition
concepts.hpp:32
yorch::detail::ordinary_member_bind_callable
Definition
traits.hpp:221
yorch::detail::ordinary_member_callable_task_argument
Definition
concepts.hpp:47
yorch::detail::ordinary_task_object_argument
Definition
concepts.hpp:27
yorch::detail::plannable_task
Definition
traits.hpp:56
yorch::detail::task_object_argument
Definition
concepts.hpp:14
yorch::detail
Definition
adapters.hpp:48
yorch::detail::is_adapter_descriptor_v
constexpr bool is_adapter_descriptor_v
Definition
adapters.hpp:63
include
yorch
detail
task_tree
concepts.hpp
Generated by
1.9.8