関数オブジェクトを渡す次の小さなプログラムの何が問題になっていますか?
#include <iostream>
#include <functional>
void foo(const std::unary_function<const std::string&, void>& fct) {
const std::string str = "test";
fct(str); // error
}
class MyFct : public std::unary_function<const std::string&, void> {
public:
void operator()(const std::string& str) const {
std::cout << str << std::endl;
}
};
int main(int argc, char** argv){
MyFct f;
foo(f);
return 0;
}
6 行目で次のエラーが表示されます。
no match for call to
`(const std::unary_function<const std::string&, void>) (const std::string&)'