Variables | |
| constexpr adl_advance_detail::advance_fn | advance {} |
| constexpr _begin_::fn | begin {} |
| constexpr _cbegin_::fn | cbegin {} |
| constexpr _cend_::fn | cend {} |
| constexpr _crbegin_::fn | crbegin {} |
| constexpr _crend_::fn | crend {} |
| constexpr data_detail::data_fn | data {} |
| constexpr _end_::fn | end {} |
| constexpr adl_move_detail::iter_move_fn | iter_move {} |
| constexpr _rbegin_::fn | rbegin {} |
| constexpr _rend_::fn | rend {} |
| constexpr _size_::fn | size {} |
| r |
r, if r is an array. Otherwise, r.begin() if that expression is well-formed and returns an Iterator. Otherwise, begin(r) if that expression returns an Iterator.| r |
r+size(r), if r is an array. Otherwise, r.end() if that expression is well-formed and returns an Iterator. Otherwise, end(r) if that expression returns an Iterator.| r |
ranges::begin with a const-qualified reference to r.| r |
ranges::end with a const-qualified reference to r.| r |
make_reverse_iterator(r+size(r)) if r is an array. Otherwise, r.rbegin() if that expression is well-formed and returns an Iterator. Otherwise, make_reverse_iterator(ranges::end(r)) if ranges::begin(r) and ranges::end(r) are both well-formed and have the same type that satisfies BidirectionalIterator.| r |
make_reverse_iterator(r)) if r is an array. Otherwise, r.rend() if that expression is well-formed and returns a type that satisfies Sentinel<S, I> where I is the type of ranges::rbegin(r). Otherwise, make_reverse_iterator(ranges::begin(r)) if ranges::begin(r) and ranges::end(r) are both well-formed and have the same type that satisfies BidirectionalIterator.| r |
ranges::rbegin with a const-qualified reference to r.| r |
ranges::rend with a const-qualified reference to r.sizeadvance_fn Not to spec: advance is an ADL customization point