A variation of the Singleton is Intern. Assume a class of
class Symbol
{
private:
string name;
Symbol()
// etc.
};
class Intern
{
private:
map<string, Symbol> symbols;
public:
Symbol makeSymbol(string name)
{
map<string, Symbol>::iterator
p;
p = symbols.find(name);