// ...
template<class INPUT_TYPE>
class DefaultClassifier {
public:
typedef INPUT_TYPE return_type;
objtype operator(const INPUT_TYPE & i) const { return i; }
};
template<typename INPUT_TYPE,
typename CLASSIFIER_TYPE = DefaultClassifier<INPUT_TYPE> >
class ProcessorMgr
{
...
void processInput(const INPUT_TYPE & i)
{
CLASSIFIER_TYPE::return_type c =
CLASSIFIER_TYPE().operator()(i);
PMap::iterator p = my_processors.find(c);
(p->second)(p->first, i);
};
};
...