operator== (std::common_iterator)
|
template
<
class
I2,
std::
sentinel_for
<
I
>
S2
>
requires
std::
sentinel_for
<
S, I2
>
|
(1) | (depuis C++20) |
|
template
<
class
I2,
std::
sentinel_for
<
I
>
S2
>
requires
std::
sentinel_for
<
S, I2
>
&&
std::
equality_comparable_with
<
I, I2
>
|
(2) | (depuis C++20) |
Compare les itérateurs et/ou les sentinelles détenus par les objets membres
std::variant
sous-jacents
var
. Deux itérateurs incomparables ou deux sentinelles sont considérés comme égaux.
Le comportement n'est pas défini si soit x soit y est dans un état invalide, c'est-à-dire si x. var . valueless_by_exception ( ) || y. var . valueless_by_exception ( ) est égal à true .
Soit
i
égal à
x.
var
.
index
(
)
et
j
égal à
y.
var
.
index
(
)
.
L'opérateur
!=
est
synthétisé
à partir de
operator==
.
Ces modèles de fonction ne sont pas visibles par la recherche non qualifiée ou qualifiée ordinaire, et ne peuvent être trouvés que par la recherche dépendante des arguments lorsque std::common_iterator<I> est une classe associée des arguments.
Table des matières |
Paramètres
| x, y | - | adaptateurs d'itérateur à comparer |
Valeur de retour
true si les itérateurs et/ou sentinelles sous-jacents sont égaux.
Exemple
#include <cassert> #include <iterator> int main() { int a[]{0, 1, 2, 3}; using CI = std::common_iterator< std::counted_iterator<int*>, std::default_sentinel_t >; CI i1{std::counted_iterator{a + 0, 2}}; CI i2{std::counted_iterator{a + 1, 2}}; CI i3{std::counted_iterator{a + 0, 3}}; CI i4{std::counted_iterator{a + 0, 0}}; CI s1{std::default_sentinel}; CI s2{std::default_sentinel}; assert((i1 == i2) == true); assert((i1 == i3) == false); assert((i2 == i3) == false); assert((s1 == s2) == true); assert((i1 == s1) == false); assert((i4 == s1) == true); }
Rapports de défauts
Les rapports de défauts modifiant le comportement suivants ont été appliqués rétroactivement aux normes C++ précédemment publiées.
| DR | S'applique à | Comportement publié | Comportement corrigé |
|---|---|---|---|
| LWG 3574 | C++20 |
variant
était entièrement constexpr (P2231R1) mais
common_iterator
ne l'était pas
|
également rendu constexpr |
Voir aussi
|
(C++20)
|
calcule la distance entre deux adaptateurs d'itérateur
(modèle de fonction) |