23 Containers library [containers]

23.2 Requirements [container.requirements]

23.2.2 General containers [container.requirements.general]

23.2.2.1 Introduction [container.intro.reqmts]

In [container.requirements.general],
  • X denotes a container class containing objects of type T,
  • a denotes a value of type X,
  • b and c denote values of type (possibly const) X,
  • i and j denote values of type (possibly const) X​::​iterator,
  • u denotes an identifier,
  • v denotes an lvalue of type (possibly const) X or an rvalue of type const X,
  • s and t denote non-const lvalues of type X, and
  • rv denotes a non-const rvalue of type X.
The following exposition-only concept is used in the definition of containers: template<class R, class T> concept container-compatible-range = // exposition only ranges::input_range<R> && convertible_to<ranges::range_reference_t<R>, T>;