#include <iostream>
#include <functional>

class Worker
{
  std::function<void()> to_work;
public:
  void work() const { to_work(); }
  Worker(std::function<void()> work_func ) : to_work(work_func) {}
};

class Employer
{
public:
  void work_bitch(const Worker& w)
  {
    w.work();
  }
};

int main()
{
  Employer e;

  e.work_bitch(Worker([]() { std::cout << "I'm working\n"; }));
  e.work_bitch(Worker([]() { std::cout << "I'm working too\n"; }));

  return 0;
}