[library.general] # 16 Library introduction [[library]](./#library) ## 16.1 General [library.general] [1](#1) [#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/lib-intro.tex#L6) This Clause describes the contents of the[*C++ standard library*](#def:library,C++_standard "16.1 General [library.general]"), how a well-formed C++ program makes use of the library, and how a conforming implementation may provide the entities in the library[.](#1.sentence-1) [2](#2) [#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/lib-intro.tex#L12) The following subclauses describe the method of description ([[description]](description "16.3 Method of description")) and organization ([[organization]](organization "16.4.2 Library contents and organization")) of the library[.](#2.sentence-1) [[requirements]](requirements "16.4 Library-wide requirements"), [[support]](support "17 Language support library") through [[exec]](exec "33 Execution control library"), and [[depr]](depr "Annex D (normative) Compatibility features") specify the contents of the library, as well as library requirements and constraints on both well-formed C++ programs and conforming implementations[.](#2.sentence-2) [3](#3) [#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/lib-intro.tex#L20) Detailed specifications for each of the components in the library are in[[support]](support "17 Language support library")–[[exec]](exec "33 Execution control library"), as shown in Table [23](#tab:library.categories "Table 23: Library categories")[.](#3.sentence-1) Table [23](#tab:library.categories) — Library categories [[tab:library.categories]](./tab:library.categories) | [🔗](#tab:library.categories-row-1)
**Clause** | **Category** | | --- | --- | | [🔗](#tab:library.categories-row-2)
[[support]](support "17 Language support library") | Language support library | | [🔗](#tab:library.categories-row-3)
[[concepts]](concepts "18 Concepts library") | Concepts library | | [🔗](#tab:library.categories-row-4)
[[diagnostics]](diagnostics "19 Diagnostics library") | Diagnostics library | | [🔗](#tab:library.categories-row-5)
[[mem]](mem "20 Memory management library") | Memory management library | | [🔗](#tab:library.categories-row-6)
[[meta]](meta "21 Metaprogramming library") | Metaprogramming library | | [🔗](#tab:library.categories-row-7)
[[utilities]](utilities "22 General utilities library") | General utilities library | | [🔗](#tab:library.categories-row-8)
[[containers]](containers "23 Containers library") | Containers library | | [🔗](#tab:library.categories-row-9)
[[iterators]](iterators "24 Iterators library") | Iterators library | | [🔗](#tab:library.categories-row-10)
[[ranges]](ranges "25 Ranges library") | Ranges library | | [🔗](#tab:library.categories-row-11)
[[algorithms]](algorithms "26 Algorithms library") | Algorithms library | | [🔗](#tab:library.categories-row-12)
[[strings]](strings "27 Strings library") | Strings library | | [🔗](#tab:library.categories-row-13)
[[text]](text "28 Text processing library") | Text processing library | | [🔗](#tab:library.categories-row-14)
[[numerics]](numerics "29 Numerics library") | Numerics library | | [🔗](#tab:library.categories-row-15)
[[time]](time "30 Time library") | Time library | | [🔗](#tab:library.categories-row-16)
[[input.output]](input.output "31 Input/output library") | Input/output library | | [🔗](#tab:library.categories-row-17)
[[thread]](thread "32 Concurrency support library") | Concurrency support library | | [🔗](#tab:library.categories-row-18)
[[exec]](exec "33 Execution control library") | Execution control library | [4](#4) [#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/lib-intro.tex#L48) The operating system interface described in ISO/IEC/IEEE 9945:2009 is hereinafter called [*POSIX*](#def:POSIX "16.1 General [library.general]")[.](#4.sentence-1) [5](#5) [#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/lib-intro.tex#L52) The language support library ([[support]](support "17 Language support library")) provides components that are required by certain parts of the C++ language, such as memory allocation ([[expr.new]](expr.new "7.6.2.8 New"), [[expr.delete]](expr.delete "7.6.2.9 Delete")) and exception processing ([[except]](except "14 Exception handling"))[.](#5.sentence-1) [6](#6) [#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/lib-intro.tex#L58) The concepts library ([[concepts]](concepts "18 Concepts library")) 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[.](#6.sentence-1) [7](#7) [#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/lib-intro.tex#L63) The diagnostics library ([[diagnostics]](diagnostics "19 Diagnostics library")) provides a consistent framework for reporting errors in a C++ program, including predefined exception classes[.](#7.sentence-1) [8](#8) [#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/lib-intro.tex#L67) The memory management library ([[mem]](mem "20 Memory management library")) provides components for memory management, including smart pointers and scoped allocators[.](#8.sentence-1) [9](#9) [#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/lib-intro.tex#L71) The metaprogramming library ([[meta]](meta "21 Metaprogramming library")) describes facilities for use in templates and during constant evaluation, including type traits, integer sequences, and rational arithmetic[.](#9.sentence-1) [10](#10) [#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/lib-intro.tex#L76) The general utilities library ([[utilities]](utilities "22 General utilities library")) includes components used by other library elements, such as a predefined storage allocator for dynamic storage management ([[basic.stc.dynamic]](basic.stc.dynamic "6.8.6.5 Dynamic storage duration")), and components used as infrastructure in C++ programs, such as tuples and function wrappers[.](#10.sentence-1) [11](#11) [#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/lib-intro.tex#L84) The containers ([[containers]](containers "23 Containers library")), iterators ([[iterators]](iterators "24 Iterators library")), ranges ([[ranges]](ranges "25 Ranges library")), and algorithms ([[algorithms]](algorithms "26 Algorithms library")) libraries provide a C++ program with access to a subset of the most widely used algorithms and data structures[.](#11.sentence-1) [12](#12) [#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/lib-intro.tex#L89) The strings library ([[strings]](strings "27 Strings library")) 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[.](#12.sentence-1) [13](#13) [#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/lib-intro.tex#L98) The text processing library ([[text]](text "28 Text processing library")) provides support for text processing, including formatting, internationalization support and regular expression matching and searching[.](#13.sentence-1) [14](#14) [#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/lib-intro.tex#L103) The [numerics library](numerics "29 Numerics library [numerics]") provides numeric algorithms and complex number components that extend support for numeric processing[.](#14.sentence-1) Thevalarray component provides support for*n*-at-a-time processing, potentially implemented as parallel operations on platforms that support such processing[.](#14.sentence-2) The random number component provides facilities for generating pseudo-random numbers[.](#14.sentence-3) [15](#15) [#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/lib-intro.tex#L114) The time library ([[time]](time "30 Time library")) provides generally useful time utilities[.](#15.sentence-1) [16](#16) [#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/lib-intro.tex#L118) The input/output library ([[input.output]](input.output "31 Input/output library")) provides theiostream components that are the primary mechanism for C++ program input and output[.](#16.sentence-1) They can be used with other elements of the library, particularly strings, locales, and iterators[.](#16.sentence-2) [17](#17) [#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/lib-intro.tex#L125) The concurrency support library ([[thread]](thread "32 Concurrency support library")) provides components to create and manage threads, including atomic operations, mutual exclusion, and interthread communication[.](#17.sentence-1) [18](#18) [#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/lib-intro.tex#L130) The execution control library ([[exec]](exec "33 Execution control library")) provides components supporting execution of function objects[.](#18.sentence-1)