122 using ParamsTuple = std::tuple<
typename ExistingNodes::ParamsType...>;
123 ParamsTuple params_store;
126 explicit ChainBuilder(ParamsTuple p) : params_store(std::move(p))
130 template <
typename Algorithm =
Positional,
typename ValueType = float,
typename... Features>
133 using NewNode =
PIDController<Algorithm, ValueType, Features...>;
136 auto new_params_tuple = std::tuple_cat(params_store, std::make_tuple(new_params));
138 return ChainBuilder<ExistingNodes..., NewNode>(new_params_tuple);
144 return std::apply([]<
typename... T>(T&&... args)
146 return PIDChain<ExistingNodes...>(std::forward<T>(args)...);