17 Library introduction [library]

17.6 Library-wide requirements [requirements]

17.6.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 [tab:cpp.headers.freestanding].

Table 16 — 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 <cstdalign> <cstdarg> <cstdbool>
[meta] Type traits <type_traits>
[atomics] Atomics <atomic>

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.