79 lines
3.9 KiB
Markdown
79 lines
3.9 KiB
Markdown
[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)
|