6#include "../../task_tree/policies.hpp"
10template <
typename...
Nodes>
13template <
typename Node>
18template <
typename Node,
typename...
Rest>
21template <
typename...
Nodes>
24template <
typename...
Nodes>
28struct max_level<> : std::integral_constant<std::size_t, 0> {};
30template <
typename Node>
31struct max_level<
Node> : std::integral_constant<std::size_t, Node::level> {};
35 : std::integral_constant<
37 (Node::level > max_level<Next, Rest...>::value
39 : max_level<Next, Rest...>::value)> {};
41template <
typename...
Nodes>
46 if constexpr (
sizeof...(Nodes) == 0) {
54template <std::
size_t Level,
typename Task,
typename FanoutPolicy = yorch::fanout_auto_policy>
63template <std::
size_t Level,
typename Task,
typename FanoutPolicy = yorch::fanout_auto_policy>
constexpr std::size_t max_level_v
constexpr bool append_level_valid_v
typename last_node< Nodes... >::type last_node_t
constexpr bool is_adapter_descriptor_v
constexpr auto value(T &&v) -> value_t< std::remove_cvref_t< T > >
Wraps a value as an owning spec.
FanoutPolicy fanout_policy_type
static constexpr std::size_t level