Можно добавить в каждый класс статический инициализатор.
class bar : public Base
{
public:
// ...
class registrator {
public:
registrator()
{
Base::registerType<bar>();
}
};
static registrator _registrator;
};
bar::registrator bar::_registrator;
Обычно для этого пишут макрос (а точнее 2 макроса, 1ый для определения регистратора, 2ой для определения статического объекта), т.к. подобные инициализаторы надо добавить в каждый класс, который вы хотите неявно регистрировать.
И не забудьте (может Вы и не забыли) в Base или от чего там наследуется handlers добавить виртуальный деструктор.