operator== (std::common_iterator)
|
template
<
class
I2,
std::
sentinel_for
<
I
>
S2
>
requires
std::
sentinel_for
<
S, I2
>
|
(1) | (C++20 이후) |
|
template
<
class
I2,
std::
sentinel_for
<
I
>
S2
>
requires
std::
sentinel_for
<
S, I2
>
&&
std::
equality_comparable_with
<
I, I2
>
|
(2) | (C++20 이후) |
기본
std::variant
멤버 객체
var
가 보유한 반복자 및/또는 센티널을 비교합니다.
비교 불가능한 두 반복자 또는 두 센티널은 동등한 것으로 간주됩니다.
동작은 다음 중 하나가 유효하지 않은 상태일 때 정의되지 않습니다: x 또는 y , 즉 x. var . valueless_by_exception ( ) || y. var . valueless_by_exception ( ) 가 true 인 경우입니다.
i
를
x.
var
.
index
(
)
로 하고,
j
를
y.
var
.
index
(
)
로 합니다.
!=
연산자는
합성된
operator==
로부터 생성됩니다.
이러한 함수 템플릿은 일반적인 unqualified lookup 또는 qualified lookup 에는 보이지 않으며, std::common_iterator<I>가 인자들의 연관 클래스일 때에만 argument-dependent lookup 에 의해 발견될 수 있습니다.
목차 |
매개변수
| x, y | - | 비교를 위한 반복자 어댑터 |
반환값
true 기본 반복자 및/또는 센티넬이 동일한 경우.
예제
#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); }
결함 보고서
다음의 동작 변경 결함 보고서들은 이전에 발표된 C++ 표준에 소급 적용되었습니다.
| DR | 적용 대상 | 게시된 동작 | 올바른 동작 |
|---|---|---|---|
| LWG 3574 | C++20 |
variant
는 완전한 constexpr이었지만(P2231R1)
common_iterator
는 그렇지 않았음
|
또한 constexpr로 만듦 |
참고 항목
|
(C++20)
|
두 반복자 어댑터 간의 거리를 계산합니다
(함수 템플릿) |