[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:templateconcept [*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]") && [convertible_to](concept.convertible#concept:convertible_to "18.4.4 Concept convertible_­to [concept.convertible]"), T>;