[compliance]
# 16 Library introduction [[library]](./#library)
## 16.4 Library-wide requirements [[requirements]](requirements#compliance)
### 16.4.2 Library contents and organization [[organization]](organization#compliance)
#### 16.4.2.5 Freestanding implementations [compliance]
[1](#1)
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/lib-intro.tex#L1579)
Two kinds of implementations are defined:hosted and freestanding ([[intro.compliance]](intro.compliance "4.1 Implementation compliance"));
the kind of the implementation isimplementation-defined[.](#1.sentence-1)
For a hosted implementation, this document
describes the set of available headers[.](#1.sentence-2)
[2](#2)
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/lib-intro.tex#L1588)
A freestanding implementation has animplementation-defined set of headers[.](#2.sentence-1)
This set shall
include at least the headers shown in Table [27](#tab:headers.cpp.fs "Table 27: C++ headers for freestanding implementations")[.](#2.sentence-2)
Table [27](#tab:headers.cpp.fs) — C++ headers for freestanding implementations [[tab:headers.cpp.fs]](./tab:headers.cpp.fs)
| [ð](#tab:headers.cpp.fs-row-1) | **Subclause** | **Header** |
| --- | --- | --- |
| [ð](#tab:headers.cpp.fs-row-2)
[[support.types]](support.types "17.2 Common definitions") | Common definitions | |
| [ð](#tab:headers.cpp.fs-row-3)
[[cstdlib.syn]](cstdlib.syn "17.2.2 Header synopsis") | C standard library | |
| [ð](#tab:headers.cpp.fs-row-4)
[[support.limits]](support.limits "17.3 Implementation properties") | Implementation properties | , , , |
| [ð](#tab:headers.cpp.fs-row-5) | | |
| [ð](#tab:headers.cpp.fs-row-6)
[[cstdint.syn]](cstdint.syn "17.4.1 Header synopsis") | Integer types | |
| [ð](#tab:headers.cpp.fs-row-7)
[[support.dynamic]](support.dynamic "17.6 Dynamic memory management") | Dynamic memory management | |
| [ð](#tab:headers.cpp.fs-row-8)
[[support.rtti]](support.rtti "17.7 Type identification") | Type identification | |
| [ð](#tab:headers.cpp.fs-row-9)
[[support.srcloc]](support.srcloc "17.8 Source location") | Source location | |
| [ð](#tab:headers.cpp.fs-row-10)
[[support.exception]](support.exception "17.9 Exception handling") | Exception handling | |
| [ð](#tab:headers.cpp.fs-row-11)
[[support.initlist]](support.initlist "17.11 Initializer lists") | Initializer lists | |
| [ð](#tab:headers.cpp.fs-row-12)
[[cmp]](cmp "17.12 Comparisons") | Comparisons | |
| [ð](#tab:headers.cpp.fs-row-13)
[[support.contract]](support.contract "17.10 Contract-violation handling") | Contract-violation handling | |
| [ð](#tab:headers.cpp.fs-row-14)
[[support.coroutine]](support.coroutine "17.13 Coroutines") | Coroutines support | |
| [ð](#tab:headers.cpp.fs-row-15)
[[support.runtime]](support.runtime "17.14 Other runtime support") | Other runtime support | |
| [ð](#tab:headers.cpp.fs-row-16)
[[concepts]](concepts "18 Concepts library") | Concepts library | |
| [ð](#tab:headers.cpp.fs-row-17)
[[errno]](errno "19.4 Error numbers") | Error numbers | |
| [ð](#tab:headers.cpp.fs-row-18)
[[syserr]](syserr "19.5 System error support") | System error support | |
| [ð](#tab:headers.cpp.fs-row-19)
[[debugging]](debugging "19.7 Debugging") | Debugging | |
| [ð](#tab:headers.cpp.fs-row-20)
[[memory]](memory "20.2 Memory") | Memory | |
| [ð](#tab:headers.cpp.fs-row-21)
[[type.traits]](type.traits "21.3 Metaprogramming and type traits") | Type traits | |
| [ð](#tab:headers.cpp.fs-row-22)
[[ratio]](ratio "21.5 Compile-time rational arithmetic") | Compile-time rational arithmetic | |
| [ð](#tab:headers.cpp.fs-row-23)
[[utility]](utility "22.2 Utility components") | Utility components | |
| [ð](#tab:headers.cpp.fs-row-24)
[[tuple]](tuple "22.4 Tuples") | Tuples | |
| [ð](#tab:headers.cpp.fs-row-25)
[[optional]](optional "22.5 Optional objects") | Optional objects | |
| [ð](#tab:headers.cpp.fs-row-26)
[[variant]](variant "22.6 Variants") | Variants | |
| [ð](#tab:headers.cpp.fs-row-27)
[[expected]](expected "22.8 Expected objects") | Expected objects | |
| [ð](#tab:headers.cpp.fs-row-28)
[[function.objects]](function.objects "22.10 Function objects") | Function objects | |
| [ð](#tab:headers.cpp.fs-row-29)
[[bit]](bit "22.11 Bit manipulation") | Bit manipulation | |
| [ð](#tab:headers.cpp.fs-row-30)
[[stdbit.h.syn]](stdbit.h.syn "22.12 Header synopsis") | C-compatible bit manipulation | |
| [ð](#tab:headers.cpp.fs-row-31)
[[array]](array "23.3.3 Class template array") | Class template array | |
| [ð](#tab:headers.cpp.fs-row-32)
[[inplace.vector]](inplace.vector "23.3.16 Class template inplace_vector") | Class template inplace_vector | |
| [ð](#tab:headers.cpp.fs-row-33)
[[views.contiguous]](views.contiguous "23.7.2 Contiguous access") | Contiguous access | |
| [ð](#tab:headers.cpp.fs-row-34)
[[views.multidim]](views.multidim "23.7.3 Multidimensional access") | Multidimensional access | |
| [ð](#tab:headers.cpp.fs-row-35)
[[iterators]](iterators "24 Iterators library") | Iterators library | |
| [ð](#tab:headers.cpp.fs-row-36)
[[ranges]](ranges "25 Ranges library") | Ranges library | |
| [ð](#tab:headers.cpp.fs-row-37)
[[algorithms]](algorithms "26 Algorithms library") | Algorithms library | , |
| [ð](#tab:headers.cpp.fs-row-38)
[[execpol]](execpol "26.3.6 Execution policies") | Execution policies | |
| [ð](#tab:headers.cpp.fs-row-39)
[[string.view]](string.view "27.3 String view classes") | String view classes | |
| [ð](#tab:headers.cpp.fs-row-40)
[[string.classes]](string.classes "27.4 String classes") | String classes | |
| [ð](#tab:headers.cpp.fs-row-41)
[[c.strings]](c.strings "27.5 Null-terminated sequence utilities") | Null-terminated sequence utilities | , |
| [ð](#tab:headers.cpp.fs-row-42)
[[charconv]](charconv "28.2 Primitive numeric conversions") | Primitive numeric conversions | |
| [ð](#tab:headers.cpp.fs-row-43)
[[rand]](rand "29.5 Random number generation") | Random number generation | |
| [ð](#tab:headers.cpp.fs-row-44)
[[c.math]](c.math "29.7 Mathematical functions for floating-point types") | Mathematical functions for floating-point types | |
| [ð](#tab:headers.cpp.fs-row-45)
[[atomics]](atomics "32.5 Atomic operations") | Atomics | |
| [ð](#tab:headers.cpp.fs-row-46) |
[3](#3)
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/lib-intro.tex#L1641)
For each of the headers listed in Table [27](#tab:headers.cpp.fs "Table 27: C++ headers for freestanding implementations"),
a freestanding implementation provides at least
the freestanding items ([[freestanding.item]](freestanding.item "16.3.3.7 Freestanding items")) declared in the header[.](#3.sentence-1)
[4](#4)
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/lib-intro.tex#L1646)
The [*hosted library facilities*](#def:library_facilities,hosted "16.4.2.5 Freestanding implementations [compliance]") are
the set of facilities described in this document
that are required for hosted implementations,
but not required for freestanding implementations[.](#4.sentence-1)
A freestanding implementation provides
a (possibly empty) implementation-defined subset of
the hosted library facilities[.](#4.sentence-2)
Unless otherwise specified, the requirements on
each declaration, entity, [*typedef-name*](dcl.typedef#nt:typedef-name "9.2.4 The typedef specifier [dcl.typedef]"), and macro
provided in this way are the same as
the corresponding requirements for a hosted implementation,
except that not all of the members of the namespaces are required to be present[.](#4.sentence-3)
[5](#5)
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/lib-intro.tex#L1660)
A freestanding implementation provides
deleted definitions ([[dcl.fct.def.delete]](dcl.fct.def.delete "9.6.3 Deleted definitions")) for
a (possibly empty) implementation-defined subset of
the namespace-scope functions and function templates
from the hosted library facilities[.](#5.sentence-1)
[*Note [1](#note-1)*:
An implementation can provide a deleted definition
so that the result of overload resolution does not silently change
when migrating a program from a freestanding implementation to
a hosted implementation[.](#5.sentence-2)
â *end note*]