std::ranges::join_view<V>::iterator<Const>::satisfy
From cppreference.com
C++
Feature test macros (C++20)
Concepts library (C++20)
Metaprogramming library (C++11)
Ranges library (C++20)
Filesystem library (C++17)
Concurrency support library (C++11)
Execution control library (C++26)
Ranges library
(C++23)(C++23)
(C++26)(C++26)
(C++23)(C++23)
(C++26)(C++26)
(C++26)(C++26)
(C++23)(C++23)
(C++23)(C++23)
(C++23)(C++23)
(C++23)(C++23)
(C++23)(C++23)
(C++23)
(C++23)(C++23)
(C++23)
(C++23)(C++23)
(C++23)(C++23)
(C++23)(C++23)
(C++23)(C++23)
(C++23)(C++23)
std::ranges::join_view
join_view::iterator::satisfy
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();
[edit] Parameters
(none)
[edit] Return value
(none)