23 template <
bool has_result = true>
24 struct action_caller {
25 template <
typename actor_t,
typename result_t,
typename propagator_state_t,
26 typename stepper_t,
typename navigator_t,
typename...
Args>
27 static void action(
const actor_t& act, propagator_state_t&
state,
30 act(state, stepper, navigator,
31 result.template
get<detail::result_type_t<actor_t>>(),
32 std::forward<Args>(
args)...);
38 struct action_caller<
false> {
39 template <
typename actor_t,
typename result_t,
typename propagator_state_t,
40 typename stepper_t,
typename navigator_t,
typename...
Args>
41 static void action(
const actor_t& act, propagator_state_t&
state,
44 act(state, stepper, navigator, std::forward<Args>(
args)...);
50 template <
typename... actors>
56 template <
typename first,
typename... others>
58 template <
typename T,
typename propagator_state_t,
typename stepper_t,
59 typename navigator_t,
typename result_t,
typename...
Args>
60 static void action(
const T& actors_tuple, propagator_state_t&
state,
63 constexpr
bool has_result = has_result_type_v<first>;
64 const auto& this_actor = std::get<first>(actors_tuple);
74 template <
typename last>
76 template <
typename T,
typename propagator_state_t,
typename stepper_t,
77 typename navigator_t,
typename result_t,
typename...
Args>
78 static void action(
const T& actors_tuple, propagator_state_t&
state,
81 constexpr
bool has_result = has_result_type_v<last>;
82 const auto& this_actor = std::get<last>(actors_tuple);
84 result, std::forward<Args>(
args)...);
91 template <
typename T,
typename propagator_state_t,
typename stepper_t,
92 typename navigator_t,
typename result_t,
typename...
Args>
93 static void action(
const T& , propagator_state_t& ,
95 const navigator_t& , result_t& ,