[common.iter.cmp] # 24 Iterators library [[iterators]](./#iterators) ## 24.5 Iterator adaptors [[predef.iterators]](predef.iterators#common.iter.cmp) ### 24.5.5 Common iterators [[iterators.common]](iterators.common#common.iter.cmp) #### 24.5.5.6 Comparisons [common.iter.cmp] [🔗](#lib:operator==,common_iterator) `template S2> requires [sentinel_for](iterator.concept.sentinel#concept:sentinel_for "24.3.4.7 Concept sentinel_­for [iterator.concept.sentinel]") friend constexpr bool operator==( const common_iterator& x, const common_iterator& y); ` [1](#1) [#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/iterators.tex#L5767) *Hardened preconditions*: x.v_.valueless_by_exception() and y.v_.valueless_by_exception() are each false[.](#1.sentence-1) [2](#2) [#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/iterators.tex#L5772) *Returns*: true if i == j, and otherwise get(x.v_) == get(y.v_), where i is x.v_.index() and j is y.v_.index()[.](#2.sentence-1) [🔗](#lib:operator==,common_iterator_) `template S2> requires [sentinel_for](iterator.concept.sentinel#concept:sentinel_for "24.3.4.7 Concept sentinel_­for [iterator.concept.sentinel]") && [equality_comparable_with](concept.equalitycomparable#concept:equality_comparable_with "18.5.4 Concept equality_­comparable [concept.equalitycomparable]") friend constexpr bool operator==( const common_iterator& x, const common_iterator& y); ` [3](#3) [#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/iterators.tex#L5788) *Hardened preconditions*: x.v_.valueless_by_exception() and y.v_.valueless_by_exception() are each false[.](#3.sentence-1) [4](#4) [#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/iterators.tex#L5793) *Returns*: true if i and j are each 1, and otherwiseget(x.v_) == get(y.v_), wherei is x.v_.index() and j is y.v_.index()[.](#4.sentence-1) [🔗](#lib:operator-,common_iterator) `template<[sized_sentinel_for](iterator.concept.sizedsentinel#concept:sized_sentinel_for "24.3.4.8 Concept sized_­sentinel_­for [iterator.concept.sizedsentinel]") I2, [sized_sentinel_for](iterator.concept.sizedsentinel#concept:sized_sentinel_for "24.3.4.8 Concept sized_­sentinel_­for [iterator.concept.sizedsentinel]") S2> requires [sized_sentinel_for](iterator.concept.sizedsentinel#concept:sized_sentinel_for "24.3.4.8 Concept sized_­sentinel_­for [iterator.concept.sizedsentinel]") friend constexpr iter_difference_t operator-( const common_iterator& x, const common_iterator& y); ` [5](#5) [#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/iterators.tex#L5809) *Hardened preconditions*: x.v_.valueless_by_exception() and y.v_.valueless_by_exception() are each false[.](#5.sentence-1) [6](#6) [#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/iterators.tex#L5814) *Returns*: 0 if i and j are each 1, and otherwiseget(x.v_) - get(y.v_), wherei is x.v_.index() and j is y.v_.index()[.](#6.sentence-1)