Requirements Convenience for simple uses. Latin-1, EUC, Unicode, etc. The iostreams library has years of history Must generalize and internationalize without breaking existing programs. This is almost the same problem as ensuring convenience for the common case. Problem 1 iostream must allow alternate character types without changing the basic interface.
Greater flexibility is possible.
Users must be able to extend Std library. Each category has a different interface. 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.