What's the purpose of having objects created by a generic factory rather than just creating an object normally? e.g from the gcc source code,
extern GenericObjectFactory<IEvent, EventType> gEventFactory;
#define REGISTER_EVENT(eventClass) gEventFactory.Register<eventClass>(eventClass::TYPE)
#define CREATE_EVENT(eventType) gEventFactory.Create(eventType)
extern GenericObjectFactory<IEvent, EventType> gEventFactory;
#define REGISTER_EVENT(eventClass) gEventFactory.Register<eventClass>(eventClass::TYPE)
#define CREATE_EVENT(eventType) gEventFactory.Create(eventType)