9 Iterators library [iterators]

9.5 Common algorithm requirements [commonalgoreq]

9.5.1 General [commonalgoreq.general]

There are several additional iterator concepts that are commonly applied to families of algorithms. These group together iterator requirements of algorithm families. There are three relational concepts that specify how element values are transferred between Readable and Writable types: IndirectlyMovable, IndirectlyCopyable, and IndirectlySwappable. There are three relational concepts for rearrangements: Permutable, Mergeable, and Sortable. There is one relational concept for comparing values from different sequences: IndirectlyComparable.

Note: The equal_to<> and less<> ([comparisons]) function types used in the concepts below impose additional constraints on their arguments beyond those that appear explicitly in the concepts' bodies. equal_to<> requires its arguments satisfy EqualityComparableWith ([concepts.lib.compare.equalitycomparable]), and less<> requires its arguments satisfy StrictTotallyOrderedWith ([concepts.lib.compare.stricttotallyordered]). — end note ]