in include/range/v3/view/join.hpp [209:234]
void satisfy(range_iterator_t<Rng> &it)
{
auto &cur = rng_->cur_;
auto &val = rng_->val_;
auto const end = ranges::end(rng_->mutable_base());
while(toggl_ ? it_ == ranges::end(cur) : val_it_ == ranges::end(val))
{
if(toggl_)
{
if(++it == end)
{
rng_ = nullptr;
it_ = detail::value_init{};
break;
}
toggl_ = false;
val_it_ = ranges::begin(val);
}
else
{
toggl_ = true;
cur = view::all(*it);
it_ = ranges::begin(cur);
}
}
}