Title: Theory / Unimportant / CS / Programming / C++ / Manual / Norm / 24 Concept

Typ: Input_iterator<X>
Meaning: X is an iterator that we can use only once to traverse a sequence (forward
using ++ ), reading each element once only.
Page: 716
Language: C++
Chapter: 24
Section: 4

Typ: Output_iterator<X>
Meaning: X is an iterator that we can use only once to traverse a sequence (forward
using ++ ), writing each element once only.
Page: 716
Language: C++
Chapter: 24
Section: 4

Typ: Forward_iterator<X>
Meaning: X is an iterator that we can use to traverse a sequence (forward using
++ ).
Page: 716
Language: C++
Chapter: 24
Section: 4
Example: This is what a singly-linked list (e.g., forward_list ) naturally supports

Typ: Bidirectional_iterator<X>
Meaning: X is an iterator that we can move both forward (using ++ ) and backward (using −− )
Page: 716
Language: C++
Chapter: 24
Section: 4
Example: Doubly linked list

Typ: Random_access_iterator<X>
Meaning: X is an iterator that we can use to traverse a sequence (forward  and backward) and to randomly access elements using subscripting and positioning using +=  and −=
Page: 716
Language: C++
Chapter: 24
Section: 4
Example: Array

Typ: Equality_comparable<X, Y>
Meaning: An X can be compared with a Y using == and !=
Page: 716
Language: C++
Chapter: 24
Section: 4

Typ: Totally_ordered<X,Y>
Meaning: X and Y are Equality_comparable and an X can be compared with a Y  using < , <= , > and >=
Page: 716
Language: C++
Chapter: 24
Section: 4

Typ: Semiregular<X>
Meaning: X s can be copied, default constructed, allocated on the free store, and are
free of minor annoying technical restrictions.
Page: 716
Language: C++
Chapter: 24
Section: 4

Typ: Regular<X>
Meaning: X s are Semiregular and can be compared using equality.
Page: 716
Language: C++
Chapter: 24
Section: 4
Example: All std

Typ: Ordered<X>
Meaning: X s are Regular and Totally_ordered.
Page: 716
Language: C++
Chapter: 24
Section: 4

Typ: Assignable<X, Y>
Meaning: A Y can be assigned to an X using = .
Page: 716
Language: C++
Chapter: 24
Section: 4

Typ: Predicate<F, X>
Meaning: An F can be called for an X yielding a bool .
Page: 716
Language: C++
Chapter: 24
Section: 4

Typ: Streamable<X>
Meaning: An X can be read and written using iostreams.
Page: 716
Language: C++
Chapter: 24
Section: 4

Typ: Movable<X>
Meaning: An X can be moved; that is, it has a move constructor and a move assignment.
In addition, an X is addressable and destructible.
Page: 716
Language: C++
Chapter: 24
Section: 4

Typ: Copyable<X>
Meaning: An X is Movable and can also be copied
Page: 716
Language: C++
Chapter: 24
Section: 4

Typ: Convertible<X>
Meaning: An X can be implicitly converted to a Y.
Page: 716
Language: C++
Chapter: 24
Section: 4

Typ: Common<X, Y>
Meaning: An X and a Y can unambiguously be converted to a common type called
Common_type<X,Y>
Page: 716
Language: C++
Chapter: 24
Section: 4
Example: Based* and Derived* have common type Base*

Typ: Range<X,>
Meaning: An X that can be used by a range- for (§9.5.1), that is, X must provide members, x.begin() and x.end() , or nonmember equivalents, begin(x) and end(x) , with the required  semantics.
Page: 716
Language: C++
Chapter: 24
Section: 4
Extra: ++/next?