Scroll to navigation

std::ranges::join_view::iterator::satisfy(3) C++ Standard Libary std::ranges::join_view::iterator::satisfy(3)

NAME

std::ranges::join_view::iterator::satisfy - std::ranges::join_view::iterator::satisfy

Synopsis


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)

2024.06.10 http://cppreference.com