namespace std::ranges {
  template<input_range V>
    requires view<V>
  class cache_latest_view<V>::sentinel {
    sentinel_t<V> end_ = sentinel_t<V>();                       
    constexpr explicit sentinel(cache_latest_view& parent);     
  public:
    sentinel() = default;
    constexpr sentinel_t<V> base() const;
    friend constexpr bool operator==(const iterator& x, const sentinel& y);
    friend constexpr range_difference_t<V> operator-(const iterator& x, const sentinel& y)
      requires sized_sentinel_for<sentinel_t<V>, iterator_t<V>>;
    friend constexpr range_difference_t<V> operator-(const sentinel& x, const iterator& y)
      requires sized_sentinel_for<sentinel_t<V>, iterator_t<V>>;
  };
}
 constexpr explicit sentinel(cache_latest_view& parent);
Effects: Initializes 
end_ with 
ranges::end(parent.base_). constexpr sentinel_t<V> base() const;
friend constexpr bool operator==(const iterator& x, const sentinel& y);
Returns: 
x.current_ == y.end_. friend constexpr range_difference_t<V> operator-(const iterator& x, const sentinel& y)
  requires sized_sentinel_for<sentinel_t<V>, iterator_t<V>>;
Returns: 
x.current_ - y.end_. friend constexpr range_difference_t<V> operator-(const sentinel& x, const iterator& y)
  requires sized_sentinel_for<sentinel_t<V>, iterator_t<V>>;
Returns: 
x.end_ - y.current_.