I define this function with a generic (and optional) class object:
template <class OptionalClass = void>
double galg(std::function<double(std::vector<double>, OptionalClass)> func, std::vector<double>& parameters, OptionalClass extrainfo);
And use it as:
double res = galg(fun, par, extra);
Where:
std::vector<double> par;
c_myclass extra;
double fun(std::vector<double> parameters, c_myclass extrainfo);
However I keep getting this error:
error: no matching function for call to ‘galg(double (&)(std::vector<double>, c_myclass), std::vector<double>&, c_myclass&)’
err = galg(fun, par, extra);
^
In file included from ... note: candidate: ‘template<class OptionalClass> double galg(std::function<double(std::vector<double>, OptionalClass)>, std::vector<double>&, OptionalClass)’
double galg(
^~~~~~~~~~~
... note: template argument deduction/substitution failed:
... note: mismatched types ‘std::function<double(std::vector<double>, OptionalClass)>’ and ‘double (*)(std::vector<double>, c_myclass)’
err = galg(fun, par, extra);
Why? What am I doing wrong?
Aucun commentaire:
Enregistrer un commentaire