Вот есть класс:
class PFactoryBase
{
protected:
PFactoryBase()
{ }
public:
virtual ~PFactoryBase()
{ }

// Вот почему тут сделано наследование, а не
// typedef std::map<std::string, PFactoryBase *> FactoryMap; ?
class FactoryMap : public std::map<std::string, PFactoryBase *>
{
public:
FactoryMap() { }
~FactoryMap();
};

static FactoryMap & GetFactories();

private:
PFactoryBase(const PFactoryBase & {}
void operator=(const PFactoryBase & {}
};

У кого-нить есть идеи? )