struct /*sentinel*/; | (since C++20) |
The return type of iota_view::end
, used when the iota_view
is bounded (i.e. Bound
is not std::unreachable_sentinel_t
) and Bound
and W
are not the same type.
The name of this class (shown here as /*sentinel*/
) is unspecified.
Typical implementation holds one data member of type Bound
(shown here as bound_
), typically a number.
/*sentinel*/() = default; | (1) | (since C++20) |
constexpr explicit /*sentinel*/( Bound bound ); | (2) | (since C++20) |
bound_
via its default member initializer (= Bound()
).bound_
with bound
. In the following descriptions, value_
is an exposition-only data member of iterator
from which its operator*
copies.
friend constexpr bool operator==( const /*iterator*/& x, const /*sentinel*/& y ); | (since C++20) |
Equivalent to: return x.value_ == y.bound_;
.
The !=
operator is synthesized from operator==
.
This function is not visible to ordinary unqualified or qualified lookup, and can only be found by argument-dependent lookup when sentinel
is an associated class of the arguments.
friend constexpr std::iter_difference_t<W> operator-(const /*iterator*/& x, const /*sentinel*/& y) requires std::sized_sentinel_for<Bound, W>; | (1) | (since C++20) |
friend constexpr std::iter_difference_t<W> operator-(const /*sentinel*/& x, const /*iterator*/& y) requires std::sized_sentinel_for<Bound, W>; | (2) | (since C++20) |
return x.value_ - y.bound_;
.return -(y.value_ - x.bound_);
.These functions are not visible to ordinary unqualified or qualified lookup, and can only be found by argument-dependent lookup when sentinel
is an associated class of the arguments.
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/ranges/iota_view/sentinel