なぜこのような機能ができるのか
typedef std::vector<someclass> infocontainer;
double function2(const infocontainer&);
void function1(std::ostream&, const std::string&, double function2(const infocontainer&), const infocontainer, const infocontainer);
メインで呼び出されたときは正常に実行されます
function1(std::cout, "astring", function2, did, didnt);
しかし、function2 に 2 番目の引数がある場合、エラーが発生します。
double function2(const infocontainer&, std::string&);
void function1(std::ostream&, const std::string&, double function2(const infocontainer&, const std::string&), const infocontainer, const infocontainer);
主要
function1(std::cout, "astring", function2, did, didnt);
candidate function not viable: no known conversion from 'double (const infocontainer &, const
std::string &)' to 'double (*)(const infocontainer &, std::string &)' for 3rd argument