fork download
  1. #include <functional>
  2. #include <iostream>
  3.  
  4. class Timer
  5. {
  6. std::function<void()> _f;
  7. public:
  8. Timer(std::function<void()> && f) : _f(f) {}
  9. void mach()
  10. {
  11. _f();
  12. }
  13. };
  14.  
  15. class X
  16. {
  17. public:
  18. int i;
  19. void function()
  20. {
  21. std::cout << "X: " << i << '\n';
  22. }
  23. };
  24.  
  25. void fun()
  26. {
  27. std::cout << "fun()\n";
  28. }
  29.  
  30. int main()
  31. {
  32. X x;
  33. x.i = 23;
  34. X x2;
  35. x2.i = 4711;
  36. Timer t(std::bind(&X::function, &x));
  37. Timer t2(std::bind(&X::function, &x2));
  38. Timer t3(&fun);
  39. t.mach();
  40. t2.mach();
  41. t3.mach();
  42. }
  43.  
Success #stdin #stdout 0s 3460KB
stdin
Standard input is empty
stdout
X: 23
X: 4711
fun()