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) |

1) Value-initializes

`bound_`

via its default member initializer (`= Bound()`

).
2) Initializes exposition-only data member

`bound_`

with `bound`

. In the following descriptions,

is an exposition-only data member of *value_*

from which its *iterator*`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

is an associated class of the arguments.*sentinel*

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) |

1) Equivalent to

`return x.value_ - y.bound_;`

.
2) Equivalent to

`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

is an associated class of the arguments.*sentinel*

© cppreference.com

Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.

https://en.cppreference.com/w/cpp/ranges/iota_view/sentinel