#include <iostream>
#include <functional>
#include <string>
using namespace std;
class foo
{
public:
void setEmail(string s) { cout << "setEmail: " << s << endl; }
void setPassword(string s) { cout << "setPassword: " << s << endl; }
void setName(string s) { cout << "setName:" << s << endl; }
void setAddress(string s) { cout << "setAddress:" << s << endl; }
void setPhone(string s) { cout << "setPhone:" << s << endl; }
};
typedef std::function<void (string)> fptr;
int main()
{
foo *newAC = new foo;
std::function<void (string)> functions[5] = {
bind(&foo::setEmail, newAC, placeholders::_1),
bind(&foo::setPassword, newAC, placeholders::_1),
bind(&foo::setName, newAC, placeholders::_1),
bind(&foo::setAddress, newAC, placeholders::_1),
bind(&foo::setPhone, newAC, placeholders::_1),
};
for (int i = 0; i < 5; i++)
functions[i]("YA");
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8ZnVuY3Rpb25hbD4KI2luY2x1ZGUgPHN0cmluZz4KCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgpjbGFzcyBmb28KewpwdWJsaWM6CiAgICAgICAgdm9pZCBzZXRFbWFpbChzdHJpbmcgcykgeyBjb3V0IDw8ICJzZXRFbWFpbDogIiA8PCBzIDw8IGVuZGw7IH0KICAgICAgICB2b2lkIHNldFBhc3N3b3JkKHN0cmluZyBzKSB7IGNvdXQgPDwgInNldFBhc3N3b3JkOiAiIDw8IHMgPDwgZW5kbDsgfQogICAgICAgIHZvaWQgc2V0TmFtZShzdHJpbmcgcykgeyBjb3V0IDw8ICJzZXROYW1lOiIgPDwgcyA8PCBlbmRsOyB9CiAgICAgICAgdm9pZCBzZXRBZGRyZXNzKHN0cmluZyBzKSB7IGNvdXQgPDwgInNldEFkZHJlc3M6IiA8PCBzIDw8IGVuZGw7IH0KICAgICAgICB2b2lkIHNldFBob25lKHN0cmluZyBzKSB7IGNvdXQgPDwgInNldFBob25lOiIgPDwgcyA8PCBlbmRsOyB9Cn07Cgp0eXBlZGVmIHN0ZDo6ZnVuY3Rpb248dm9pZCAoc3RyaW5nKT4gZnB0cjsKCmludCBtYWluKCkKewogICAgICAgIGZvbyAqbmV3QUMgPSBuZXcgZm9vOwoKICAgICAgICBzdGQ6OmZ1bmN0aW9uPHZvaWQgKHN0cmluZyk+IGZ1bmN0aW9uc1s1XSA9IHsKICAgICAgICAgICAgICAgIGJpbmQoJmZvbzo6c2V0RW1haWwsICAgIG5ld0FDLCBwbGFjZWhvbGRlcnM6Ol8xKSwKICAgICAgICAgICAgICAgIGJpbmQoJmZvbzo6c2V0UGFzc3dvcmQsIG5ld0FDLCBwbGFjZWhvbGRlcnM6Ol8xKSwKICAgICAgICAgICAgICAgIGJpbmQoJmZvbzo6c2V0TmFtZSwgICAgIG5ld0FDLCBwbGFjZWhvbGRlcnM6Ol8xKSwKICAgICAgICAgICAgICAgIGJpbmQoJmZvbzo6c2V0QWRkcmVzcywgIG5ld0FDLCBwbGFjZWhvbGRlcnM6Ol8xKSwKICAgICAgICAgICAgICAgIGJpbmQoJmZvbzo6c2V0UGhvbmUsICAgIG5ld0FDLCBwbGFjZWhvbGRlcnM6Ol8xKSwKICAgICAgICB9OwoKICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IDU7IGkrKykKICAgICAgICAgICAgICAgIGZ1bmN0aW9uc1tpXSgiWUEiKTsKCiAgICAgICAgcmV0dXJuIDA7Cn0=