Listing 3


  template<class PROCESSOR_TYPE>
  void processInput(std::string input_category, InputObj i)
  { 
    (PROCESSOR_TYPE*)
    (my_processors.find(input_category)->second))->operator()(i); 
  }
// ...

  mgr.processInput<FooProcessor>("foo", x1);
  mgr.processInput<BarProcessor>("bar", x2);