# std::ranges::join_view<V>::iterator<Const>::satisfy

From cppreference.com
< cpp‎ | ranges‎ | join view‎ | iterator

constexpr void satisfy(); |  | (since C++20) (exposition only*)

Skips over empty inner ranges and initializes the underlying iterator `inner_`.

Let the constant /*ref-is-glvalue*/ be std::is_reference_v<ranges::range_reference_t<Base>>.

The function body is equivalent to

    auto update_inner = [this](const ranges::iterator_t<Base>& x) -> auto&&
    {
        if constexpr (/*ref-is-glvalue*/)     // *x is a reference
            return *x;
        else
            return parent_->inner_./*emplace-deref*/(x);
    };

    for (; outer_ != ranges::end(parent_->base_); ++outer_)
    {
        auto&& inner = update_inner(outer_);
        inner_ = ranges::begin(inner);
        if (inner_ != ranges::end(inner))
            return;
    }

    if constexpr (/*ref-is-glvalue*/)
        inner_ = InnerIter();

### Parameters

(none)

### Return value

(none)

Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/ranges/join_view/iterator/satisfy&oldid=175910"