[contents] # 16 Library introduction [[library]](./#library) ## 16.4 Library-wide requirements [[requirements]](requirements#contents) ### 16.4.2 Library contents and organization [[organization]](organization#contents) #### 16.4.2.2 Library contents [contents] [1](#1) [#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/lib-intro.tex#L1117) The C++ standard library provides definitions for the entities and macros described in the synopses of the C++ standard library headers ([[headers]](headers "16.4.2.3 Headers")), unless otherwise specified[.](#1.sentence-1) [2](#2) [#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/lib-intro.tex#L1123) All library entities exceptoperator new andoperator delete are defined within the namespacestd or namespaces nested within namespacestd[.](#2.sentence-1)[142](#footnote-142 "The C standard library headers ([support.c.headers]) also define names within the global namespace, while the C++ headers for C library facilities ([headers]) can also define names within the global namespace.") It is unspecified whether names declared in a specific namespace are declared directly in that namespace or in an inline namespace inside that namespace[.](#2.sentence-2)[143](#footnote-143 "This gives implementers freedom to use inline namespaces to support multiple configurations of the library.") [3](#3) [#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/lib-intro.tex#L1146) Whenever an unqualified name other thanswap, make_error_code, make_error_condition,from_stream, orsubmdspan_mapping is used in the specification of a declaration D in [[support]](support "17 Language support library") through [[exec]](exec "33 Execution control library") or [[depr]](depr "Annex D (normative) Compatibility features"), its meaning is established as-if by performing unqualified name lookup ([[basic.lookup.unqual]](basic.lookup.unqual "6.5.3 Unqualified name lookup")) in the context of D[.](#3.sentence-1) [*Note [1](#note-1)*: Argument-dependent lookup is not performed[.](#3.sentence-2) — *end note*] Similarly, the meaning of a [*qualified-id*](expr.prim.id.qual#nt:qualified-id "7.5.5.3 Qualified names [expr.prim.id.qual]") is established as-if by performing qualified name lookup ([[basic.lookup.qual]](basic.lookup.qual "6.5.5 Qualified name lookup")) in the context of D[.](#3.sentence-3) [*Example [1](#example-1)*: The reference to is_array_v in the specification of std​::​to_array ([[array.creation]](array.creation "23.3.3.6 Array creation functions")) refers to ​::​std​::​is_array_v[.](#3.sentence-4) — *end example*] [*Note [2](#note-2)*: Operators in expressions ([[over.match.oper]](over.match.oper "12.2.2.3 Operators in expressions")) are not so constrained; see [[global.functions]](global.functions "16.4.6.4 Non-member functions")[.](#3.sentence-5) — *end note*] The meaning of the unqualified name swap is established in an overload resolution context for swappable values ([[swappable.requirements]](swappable.requirements "16.4.4.3 Swappable requirements"))[.](#3.sentence-6) The meanings of the unqualified namesmake_error_code, make_error_condition,from_stream, andsubmdspan_mapping are established as-if by performing argument-dependent lookup ([[basic.lookup.argdep]](basic.lookup.argdep "6.5.4 Argument-dependent name lookup"))[.](#3.sentence-7) [142)](#footnote-142)[142)](#footnoteref-142) The C standard library headers ([[support.c.headers]](support.c.headers "17.15 C headers")) also define names within the global namespace, while the C++ headers for C library facilities ([[headers]](headers "16.4.2.3 Headers")) can also define names within the global namespace[.](#footnote-142.sentence-1) [143)](#footnote-143)[143)](#footnoteref-143) This gives implementers freedom to use inline namespaces to support multiple configurations of the library[.](#footnote-143.sentence-1)