55 lines
1.7 KiB
Markdown
55 lines
1.7 KiB
Markdown
[container.intro.reqmts]
|
||
|
||
# 23 Containers library [[containers]](./#containers)
|
||
|
||
## 23.2 Requirements [[container.requirements]](container.requirements#container.intro.reqmts)
|
||
|
||
### 23.2.2 General containers [[container.requirements.general]](container.requirements.general#container.intro.reqmts)
|
||
|
||
#### 23.2.2.1 Introduction [container.intro.reqmts]
|
||
|
||
[1](#1)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/containers.tex#L77)
|
||
|
||
In [[container.requirements.general]](container.requirements.general "23.2.2 General containers"),
|
||
|
||
- [(1.1)](#1.1)
|
||
|
||
X denotes a container class containing objects of type T,
|
||
|
||
- [(1.2)](#1.2)
|
||
|
||
a denotes a value of type X,
|
||
|
||
- [(1.3)](#1.3)
|
||
|
||
b and c denote values of type (possibly const) X,
|
||
|
||
- [(1.4)](#1.4)
|
||
|
||
i and j denote values of type (possibly const) X::iterator,
|
||
|
||
- [(1.5)](#1.5)
|
||
|
||
u denotes an identifier,
|
||
|
||
- [(1.6)](#1.6)
|
||
|
||
v denotes an lvalue of type (possibly const) X or
|
||
an rvalue of type const X,
|
||
|
||
- [(1.7)](#1.7)
|
||
|
||
s and t denote non-const lvalues of type X, and
|
||
|
||
- [(1.8)](#1.8)
|
||
|
||
rv denotes a non-const rvalue of type X[.](#1.sentence-1)
|
||
|
||
[2](#2)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/containers.tex#L99)
|
||
|
||
The following exposition-only concept is used in the definition of containers:template<class R, class T>concept [*container-compatible-range*](#concept:container-compatible-range "23.2.2.1 Introduction [container.intro.reqmts]") = // *exposition only* ranges::[input_range](range.refinements#concept:input_range "25.4.6 Other range refinements [range.refinements]")<R> && [convertible_to](concept.convertible#concept:convertible_to "18.4.4 Concept convertible_to [concept.convertible]")<ranges::range_reference_t<R>, T>;
|