jeudi 13 décembre 2018

C++ function with a generic and optional class

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