standard library design roles:A standard library is something that every implementer
must supply so that every programmer can rely on it.
[4] Supplies nonprimitive facilities that a programmer can rely on for portability, such as lists
(§17.2.2), maps (§17.4.1), sort functions (§18.7.1), and I/O streams (Chapter 21).
[5] Provides a framework for extending the facilities it provides, such as conventions and support facilities that allow a user to provide I/O of a userdefined
type in the style of I/O
for builtin
types.
[6] Provides the common foundation for other libraries
Design Constraints:The requirements of ‘‘primitiveness’’ and ‘‘convenience of common uses’’
The technique
of supplying comparison criteria through a template argument described in §13.4 solves that
problem. The example illustrates the tension between efficiency and generality.