std::ranges::join_view::end(3)

NAME
std::ranges::join_view::end - std::ranges::join_view::end

Synopsis
   constexpr auto end(); (1) (since
                        C++20)
   constexpr auto end() const
       requires ranges::input_range<const V> && (2) (since
                        C++20)
                std::is_reference_v<ranges::range_reference_t<const
   V>>;
   Returns a sentinel or an iterator representing the end of the join_view.
   Let base_ be the underlying view:
   1) Equivalent to
 if constexpr (ranges::forward_range<V> &&
               std::is_reference_v<ranges::range_reference_t<V>> &&
               ranges::forward_range<ranges::range_reference_t<V>> &&
               ranges::common_range<V> &&
               ranges::common_range<ranges::range_reference_t<V>>)
     return /*iterator*/<__SimpleView<V>>{*this, ranges::end(base_)};
 else
     return /*sentinel*/<__SimpleView<V>>{*this};
   2) Equivalent to
 if constexpr (ranges::forward_range<const V> &&
               std::is_reference_v<ranges::range_reference_t<const V>> &&
               ranges::forward_range<ranges::range_reference_t<const V>> &&
               ranges::common_range<const V> &&
               ranges::common_range<ranges::range_reference_t<const V>>)
     return /*iterator*/<true>{*this, ranges::end(base_)};
 else
     return /*sentinel*/<true>{*this};

Parameters
   (none)

Return value
   1) sentinel which compares equal to the end iterator.
   2) iterator to the element following the last element.

Example
    This section is incomplete
    Reason: no example

See also
   begin returns an iterator to the beginning
   (C++20) (public member function)
   ranges::end returns a sentinel indicating the end of a range
   (C++20) (customization point object)

Category:
     * Todo no example