I have a family of classes with methods with the following signature:
double compute(list<T> pars)
This method performs a calculation with the parameters received through pars
. For each compute(list)
method, I have another compute(x1, x2, ..., xn)
which is the method implementing the real calculation. Thus, compute(pars)
should do some such as:
double compute(list<T> pars)
{
T x1 = list.pop_back();
T x2 = list.pop_back();
// .. so on until last parameter xn
T xn = list.pop_back();
return compute(x1, x2, .., xn); // here the real implementation is called
}
This pattern repeats many times, the only thing that could change is the size of pars
list and of course the implementation of compute(x1, x1, ..)
.
I would like to find a way for "driying" this repetitive process; concretely, extracting the parameters in pars
list and building the call to compute(x1, x2, .., xn)
. I have been trying without success to do some macro tricks.
My question is if it exists some way based on metaprogramming that allows me to implement compute(list<T> pars)
once and simply reuse it n order to perform the call to compute(x1, x2, ..., xn)
Aucun commentaire:
Enregistrer un commentaire