| ||||||||||||||||||||||
| Range primitives | |||||||
| |||||||
| Range concepts | |||||||||||||||||||
| |||||||||||||||||||
| Range factories | |||||||||
| |||||||||
| Range adaptors | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Helper items | |||||||||||||||||
| |||||||||||||||||
| Member functions | ||||
| Deduction guides | ||||
| Iterator | ||||
join_view::iterator::satisfy | ||||
| Sentinel | ||||
constexprvoid satisfy(); | (since C++20) (exposition only*) | |
Skips over empty inner ranges and initializes the underlying iteratorinner_.
Let the constant/*ref-is-glvalue*/ bestd::is_reference_v<ranges::range_reference_t<Base>>.
The function body is equivalent to
auto update_inner=[this](constranges::iterator_t<Base>& x)->auto&&{ifconstexpr(/*ref-is-glvalue*/)// *x is a referencereturn*x;elsereturn 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;} ifconstexpr(/*ref-is-glvalue*/) inner_= InnerIter();
(none)
(none)