#include <iostream>
#include <functional>
class testBind
{
public:
void print(int num)
{
std::cout << "num = " << num << std::endl;
}
void print(const std::string& str)
{
std::cout << "str = " << str << std::endl;
}
};
using mf_printnum = void(testBind::*)(int);
using mf_printstr = void(testBind::*)(const std::string&);
int main(int argc, char *argv[])
{
testBind test;
std::function<void(int)> mf = std::bind((mf_printnum)&testBind::print, test, std::placeholders::_1);
std::function<void(const std::string&)> mf2 = std::bind((mf_printstr)&testBind::print, test, std::placeholders::_1);
mf(11);
mf2("test");
return 0;
}