16template <
typename Plan, std::
size_t I>
19 { Plan::no_parent } -> std::convertible_to<std::size_t>;
21 { Plan::template
child_count<I> } -> std::convertible_to<std::size_t>;
29template <
typename Plan, std::
size_t I>
44 if constexpr (std::is_void_v<typename Plan::template output_type<parent>>) {
57template <
typename Plan, std::
size_t I>
65template <
typename Plan, std::
size_t I>
72 }
else if constexpr (Plan::template
parent_index<I> == Plan::no_parent) {
76 return !std::is_void_v<typename Plan::template output_type<parent>>;
80template <
typename Plan, std::size_t...
I>
86template <
typename Plan, std::size_t...
I>
92template <
typename Plan, std::size_t...
I>
98template <
typename Plan>
102template <
typename Plan>
106template <
typename Plan>
Minimal static-plan protocol required by the prev-access validation path for a specific node index.
consteval bool plan_prev_access_valid_impl(std::index_sequence< I... >)
consteval bool node_prev_source_valid()
Checks whether node I is structurally allowed to use direct-parent access at all.
constexpr bool plan_prev_source_valid_v
consteval bool plan_forward_prev_source_valid_impl(std::index_sequence< I... >)
constexpr bool plan_forward_prev_source_valid_v
consteval bool plan_prev_source_valid_impl(std::index_sequence< I... >)
consteval bool node_prev_access_valid()
Checks whether node I's declared prev-access mode is locally valid.
constexpr bool plan_prev_access_valid_v
consteval bool node_forward_prev_source_valid()
constexpr bool is_adapter_descriptor_v