List of Tables [tab]


6.1 General [library.general]

Table 1 — Library categories
Clause Category
[concepts.lib] Concepts library
[utilities] General utilities library
[iterators] Iterators library
[ranges] Ranges library
[algorithms] Algorithms library
[numerics] Numerics library

6.3.2 Headers [headers]

Table 2 — Ranges TS library headers
<experimental/ranges/algorithm> <experimental/ranges/range>
<experimental/ranges/concepts> <experimental/ranges/tuple>
<experimental/ranges/functional> <experimental/ranges/type_traits>
<experimental/ranges/iterator> <experimental/ranges/utility>
<experimental/ranges/random>

7.1 General [concepts.lib.general]

Table 3 — Fundamental concepts library summary
Subclause Header(s)
[concepts.lib.corelang] Core language concepts <experimental/ranges/concepts>
[concepts.lib.compare] Comparison concepts
[concepts.lib.object] Object concepts
[concepts.lib.callable] Callable concepts

8.1 General [utilities.general]

Table 4 — General utilities library summary
Subclause Header(s)
[utility] Utility components <experimental/ranges/utility>
[function.objects] Function objects <experimental/ranges/functional>
[meta] Type traits <type_traits>
[taggedtup] Tagged tuple-like types <experimental/ranges/utility> &
<experimental/ranges/tuple>

8.4.2 Type properties [meta.unary.prop]

Table 5 — Additional type property predicates
TemplateConditionPrecondition
template <class T, class U>
struct is_swappable_with;
The expressions ranges::swap(declval<T>(), declval<U>()) and ranges::swap(declval<U>(), declval<T>()) are each well-formed when treated as an unevaluated operand (Clause ISO/IEC 14882:2014 §[expr]). Access checking is performed as if in a context unrelated to T and U. Only the validity of the immediate context of the swap expressions is considered. [ Note: The compilation of the expressions can result in side effects such as the instantiation of class template specializations and function template specializations, the generation of implicitly-defined functions, and so on. Such side effects are not in the “immediate context” and can result in the program being ill-formed.  — end note ] T and U shall be complete types, (possibly cv-qualified) void, or arrays of unknown bound.
template <class T>
struct is_swappable;
For a referenceable type T, the same result as is_swappable_with_v<T&, T&>, otherwise false. T shall be a complete type, (possibly cv-qualified) void, or an array of unknown bound.
template <class T, class U>
struct is_nothrow_swappable_with;
is_swappable_with_v<T, U> is true and each swap expression of the definition of is_swappable_with<T, U> is known not to throw any exceptions ( ISO/IEC 14882:2014 §[expr.unary.noexcept]). T and U shall be complete types, (possibly cv-qualified) void, or arrays of unknown bound.
template <class T>
struct is_nothrow_swappable;
For a referenceable type T, the same result as is_nothrow_swappable_with_v<T&, T&>, otherwise false. T shall be a complete type, (possibly cv-qualified) void, or an array of unknown bound.

8.4.3 Other transformations [meta.trans.other]

Table 6 — Other transformations
TemplateComments
template <class... T>
struct common_type;
The member typedef type shall be defined or omitted as specified below. If it is omitted, there shall be no member type. Each type in the parameter pack T shall be complete or (possibly cv) void. A program may specialize this trait if at least one template parameter in the specialization depends on a user-defined type and sizeof...(T) == 2. [ Note: Such specializations are needed when only explicit conversions are desired among the template arguments.  — end note ]
template <class T, class U,
template <class> class TQual,
template <class> class UQual>
struct basic_common_reference;
The primary template shall have no member typedef type. A program may specialize this trait if at least one template parameter in the specialization depends on a user-defined type. In such a specialization, a member typedef type may be defined or omitted. If it is omitted, there shall be no member type. [ Note: Such specializations may be used to influence the result of common_reference. — end note ]
template <class... T>
struct common_reference;
The member typedef type shall be defined or omitted as specified below. If it is omitted, there shall be no member type. Each type in the parameter pack T shall be complete or (possibly cv) void.

9.1 General [iterators.general]

Table 7 — Iterators library summary
Subclause Header(s)
[iterator.requirements] Iterator requirements
[indirectcallable] Indirect callable requirements
[commonalgoreq] Common algorithm requirements
[iterator.primitives] Iterator primitives <experimental/ranges/iterator>
[iterators.predef] Predefined iterators
[iterators.stream] Stream iterators

9.3.1 General [iterator.requirements.general]

Table 8 — Relations among iterator categories
Random Access Bidirectional Forward Input
Output

10.1 General [ranges.general]

Table 9 — Ranges library summary
Subclause Header(s)
[range.access] Range access <experimental/ranges/range>
[range.primitives] Range primitives
[ranges.requirements] Requirements

10.6.1 General [ranges.requirements.general]

Table 10 — Relations among range categories
Sized Range
Range
View

11.1 General [algorithms.general]

Table 11 — Algorithms library summary
Subclause Header(s)
[alg.nonmodifying] Non-modifying sequence operations
[alg.modifying.operations] Mutating sequence operations <experimental/ranges/algorithm>
[alg.sorting] Sorting and related operations