fork(2) download
  1. #include <functional>
  2. #include <iostream>
  3. #include <map>
  4. using namespace std;
  5.  
  6. struct MyClass{
  7. void a(void*){ cout << "a\n"; }
  8. void b(void*){ cout << "b\n"; }
  9. void c(void*){ cout << "c\n"; }
  10. };
  11.  
  12. int main() {
  13. map<int, function<void(void*)>> foo;
  14. map<int, function<void(MyClass&, void*)>> bar;
  15. MyClass mc;
  16.  
  17. foo[1] = bind(&MyClass::a, mc, placeholders::_1);
  18. foo[2] = bind(&MyClass::b, mc, placeholders::_1);
  19. foo[3] = bind(&MyClass::c, mc, placeholders::_1);
  20.  
  21. bar[1] = mem_fn(&MyClass::a);
  22. bar[2] = mem_fn(&MyClass::b);
  23. bar[3] = mem_fn(&MyClass::c);
  24.  
  25. for(auto i = 1; i <= 3; ++i) {
  26. cout << "Foo: ";
  27. foo[i](nullptr);
  28. cout << "Bar: ";
  29. bar[i](mc, nullptr);
  30. }
  31. }
Success #stdin #stdout 0s 3420KB
stdin
Standard input is empty
stdout
Foo: a
Bar: a
Foo: b
Bar: b
Foo: c
Bar: c