16 Library introduction [library]

16.1 General [library.general]

This Clause describes the contents of the C++ standard library, how a well-formed C++ program makes use of the library, and how a conforming implementation may provide the entities in the library.
The following subclauses describe the method of description ([description]) and organization ([organization]) of the library.
[requirements], [support] through [thread], and [depr] specify the contents of the library, as well as library requirements and constraints on both well-formed C++ programs and conforming implementations.
Detailed specifications for each of the components in the library are in [support][thread], as shown in Table 20.
Table 20: Library categories [tab:library.categories]
Language support library
Concepts library
Diagnostics library
General utilities library
Strings library
Containers library
Iterators library
Ranges library
Algorithms library
Numerics library
Time library
Localization library
Input/output library
Regular expressions library
Atomic operations library
Thread support library
The language support library provides components that are required by certain parts of the C++ language, such as memory allocation ([expr.new], [expr.delete]) and exception processing.
The concepts library ([concepts]) describes library components that C++ programs may use to perform compile-time validation of template arguments and perform function dispatch based on properties of types.
The diagnostics library ([diagnostics]) provides a consistent framework for reporting errors in a C++ program, including predefined exception classes.
The general utilities library includes components used by other library elements, such as a predefined storage allocator for dynamic storage management, and components used as infrastructure in C++ programs, such as tuples, function wrappers, and time facilities.
The strings library ([strings]) provides support for manipulating text represented as sequences of type char, sequences of type char8_­t, sequences of type char16_­t, sequences of type char32_­t, sequences of type wchar_­t, and sequences of any other character-like type.
The localization library provides extended internationalization support for text processing.
The containers ([containers]), iterators ([iterators]), ranges ([ranges]), and algorithms ([algorithms]) libraries provide a C++ program with access to a subset of the most widely used algorithms and data structures.
The numerics library provides numeric algorithms and complex number components that extend support for numeric processing.
The valarray component provides support for n-at-a-time processing, potentially implemented as parallel operations on platforms that support such processing.
The random number component provides facilities for generating pseudo-random numbers.
The input/output library provides the iostream components that are the primary mechanism for C++ program input and output.
They can be used with other elements of the library, particularly strings, locales, and iterators.
The regular expressions library provides regular expression matching and searching.
The atomic operations library allows more fine-grained concurrent access to shared data than is possible with locks.
The thread support library provides components to create and manage threads, including mutual exclusion and interthread communication.