Need a collection indexed by abstract type. Each facet implements one such interface. A locale maps from a facet type to an instance of that type. For backward compatibility, you may be unable to add a locale argument. Operators have a fixed number of arguments, can't add any.
Specialized uses are possible.
We would like to use the same objects regardless of where they are. Objects are often composed of subobjects which must also find their way to the same storage. Memory model choice must appear in the template and class interfaces. The standard library encapsulates memory models in class interfaces called allocators. The default allocator type, called allocator , provides ordinary C-style memory management.