33 struct value_corrector;
36 template <
typename R,
ParID_t... params>
37 struct value_corrector_impl;
40 struct value_corrector {
43 static void result(ParVector_t&
values) {
44 value_corrector_impl<ParVector_t, params...>::calculate(values, 0);
49 struct value_corrector_impl<
R, first, others...> {
50 static void calculate(
R&
values,
unsigned int pos) {
51 using parameter_type = BoundParameterType<first>;
52 if (parameter_type::may_modify_value) {
55 value_corrector_impl<R, others...>::calculate(values, pos + 1);
59 template <
typename R, ParID_t last>
60 struct value_corrector_impl<
R, last> {
61 static void calculate(
R& values,
unsigned int pos) {
62 using parameter_type = BoundParameterType<last>;
63 if (parameter_type::may_modify_value) {