#include <iostream>

class Worker
{
public:
  virtual ~Worker() = default;
  virtual void work() const = 0;
};

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

int main() {
  Employer e;
  
  typedef struct : Worker {
  	void work() const override
  	{
  	  std::cout << "I'm working\n";
  	}
  } LocalWorkerT;
  
  struct : Worker {
  	void work() const override
  	{
  	  std::cout << "I'm working too\n";
  	}
  } LocalWorker;
  
  e.askForWork(LocalWorkerT {});
  e.askForWork(LocalWorker);
}