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 [exec], 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][exec], as shown in Table 23.
Table 23 — Library categories [tab:library.categories]
Clause
Category
Language support library
Concepts library
Diagnostics library
Memory management library
Metaprogramming library
General utilities library
Containers library
Iterators library
Ranges library
Algorithms library
Strings library
Text processing library
Numerics library
Time library
Input/output library
Concurrency support library
Execution control library
The operating system interface described in ISO/IEC/IEEE 9945:2009 is hereinafter called POSIX.
The language support library ([support]) provides components that are required by certain parts of the C++ language, such as memory allocation ([expr.new], [expr.delete]) and exception processing ([except]).
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 memory management library ([mem]) provides components for memory management, including smart pointers and scoped allocators.
The metaprogramming library ([meta]) describes facilities for use in templates and during constant evaluation, including type traits, integer sequences, and rational arithmetic.
The general utilities library ([utilities]) includes components used by other library elements, such as a predefined storage allocator for dynamic storage management ([basic.stc.dynamic]), and components used as infrastructure in C++ programs, such as tuples and function wrappers.
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 strings library ([strings]) provides support for manipulating 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 text processing library ([text]) provides support for text processing, including formatting, internationalization support and regular expression matching and searching.
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 time library ([time]) provides generally useful time utilities.
The input/output library ([input.output]) 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 concurrency support library ([thread]) provides components to create and manage threads, including atomic operations, mutual exclusion, and interthread communication.
The execution control library ([exec]) provides components supporting execution of function objects.