20 Library introduction [library]

20.5 Library-wide requirements [requirements]

20.5.1 Library contents and organization [organization] Freestanding implementations [compliance]

Two kinds of implementations are defined: hosted and freestanding ([intro.compliance]). For a hosted implementation, this International Standard describes the set of available headers.

A freestanding implementation has an implementation-defined set of headers. This set shall include at least the headers shown in Table 19.

Table 19 — C++ headers for freestanding implementations
Subclause Header(s)
[support.types] Types <cstddef>
[support.limits] Implementation properties <cfloat> <limits> <climits>
[cstdint] Integer types <cstdint>
[support.start.term] Start and termination <cstdlib>
[support.dynamic] Dynamic memory management <new>
[support.rtti] Type identification <typeinfo>
[support.exception] Exception handling <exception>
[support.initlist] Initializer lists <initializer_­list>
[support.runtime] Other runtime support <cstdarg>
[meta] Type traits <type_­traits>
[atomics] Atomics <atomic>
[depr.cstdalign.syn], [depr.cstdbool.syn] Deprecated headers <cstdalign> <cstdbool>

The supplied version of the header <cstdlib> shall declare at least the functions abort, atexit, at_­quick_­exit, exit, and quick_­exit ([support.start.term]). The other headers listed in this table shall meet the same requirements as for a hosted implementation.