The entities in the C++ standard library are defined in headers,
whose contents are made available to a translation unit when it contains the appropriate
#include
preprocessing directive ([cpp.include]).
A translation unit may include library headers in any order (Clause [lex]).
Each may be included more than once, with no effect different from
being included exactly once, except that the effect of including either
<cassert>
or
<assert.h>
depends each time on the lexically
current definition of
NDEBUG.173
A translation unit shall include a header only outside of any
declaration or definition, and shall include the header lexically
before the first reference in that translation unit to any of the entities
declared in that header.