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].
Subclause | Header(s) | |
<ciso646> | ||
[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.