template<typename IdentifierType, typename AbstractProduct, typename ArgumentType>
class gaia2::Factory< IdentifierType, AbstractProduct, ArgumentType >
A basic implementation of a generic factory class.
We can choose the identifier type (usually string) and the base type that we want to implement. Registration is done via the creation of a static object of type Factory<IdentifierType, AbstractProduct>::Registrar<ConcreteProduct>. There is also a third template parameter that can be used, the type of an optional argument. That means we will be able to call: Factory::create("PCA", "dim=3");