| 
| 
  | zip_with_view (Rngs ...rngs) | 
|   | 
| 
  | zip_with_view (Fun fun, Rngs ...rngs) | 
|   | 
| 
  | iter_zip_with_view (Rngs ...rngs) | 
|   | 
| 
  | iter_zip_with_view (indirected< Fun > fun, Rngs ...rngs) | 
|   | 
| constexpr size_type_  | size () const | 
|   | 
| detail::facade_iterator_t< D >  | begin () | 
|   | Let d be static_cast<Derived &>(*this). Let b be std::as_const(d).begin_cursor() if that expression is well-formed; otherwise, let b be d.begin_cursor(). Let B be the type of b.  More...
  | 
|   | 
| detail::facade_iterator_t< D const >  | begin () const | 
|   | 
| detail::facade_sentinel_t< D >  | end () | 
|   | Let d be static_cast<Derived &>(*this). Let e be std::as_const(d).end_cursor() if that expression is well-formed; otherwise, let e be d.end_cursor(). Let E be the type of e.  More...
  | 
|   | 
| detail::facade_sentinel_t< D const >  | end () const | 
|   | 
| 
auto  | at (range_difference_type_t< D > n) -> decltype(std::declval< D & >().begin()[n]) | 
|   | Returns a reference to the element at specified location pos, with bounds checking. 
  | 
|   | 
| auto  | at (range_difference_type_t< D > n) const -> decltype(std::declval< D const & >().begin()[n]) | 
|   | 
| 
range_reference_t< D >  | back () | 
|   | Access the last element in a range: 
  | 
|   | 
| range_reference_t< D const >  | back () const | 
|   | 
| constexpr bool  | empty () const noexcept | 
|   | 
| 
constexpr bool  | empty () const noexcept(noexcept(bool(ranges::begin(std::declval< D const & >())==ranges::end(std::declval< D const & >())))) | 
|   | 
| 
range_reference_t< D >  | front () | 
|   | Access the first element in a range: 
  | 
|   | 
| range_reference_t< D const >  | front () const | 
|   | 
| 
constexpr  | operator bool () const noexcept(noexcept(ranges::empty(std::declval< D const & >()))) | 
|   | 
| 
  | operator Container () | 
|   | Implicit conversion to something that looks like a container. 
  | 
|   | 
|   | operator Container () const | 
|   | 
| 
constexpr auto  | operator! () const noexcept(noexcept(decltype(ranges::empty(std::declval< D const & >()))(ranges::empty(std::declval< D const & >())))) -> decltype(ranges::empty(std::declval< D const & >())) | 
|   | 
| 
view_interface &  | operator= (view_interface &&)=default | 
|   | 
| 
view_interface &  | operator= (view_interface const &)=default | 
|   | 
| 
auto  | operator[] (range_difference_type_t< D > n) -> decltype(std::declval< D & >().begin()[n]) | 
|   | Simple indexing: 
  | 
|   | 
| auto  | operator[] (range_difference_type_t< D > n) const -> decltype(std::declval< D const & >().begin()[n]) | 
|   | 
| 
auto  | operator[] (detail::slice_bounds< range_difference_type_t< D >> offs) &-> decltype(std::declval< Slice >()(std::declval< D & >(), offs.from, offs.to)) | 
|   | Python-ic slicing: 
  | 
|   | 
| auto  | operator[] (detail::slice_bounds< range_difference_type_t< D >> offs) const &-> decltype(std::declval< Slice >()(std::declval< D const & >(), offs.from, offs.to)) | 
|   | 
| auto  | operator[] (detail::slice_bounds< range_difference_type_t< D >> offs) &&-> decltype(std::declval< Slice >()(std::declval< D >(), offs.from, offs.to)) | 
|   | 
| auto  | operator[] (detail::slice_bounds< range_difference_type_t< D >, detail::from_end_< range_difference_type_t< D >>> offs) &-> decltype(std::declval< Slice >()(std::declval< D & >(), offs.from, offs.to)) | 
|   | 
| auto  | operator[] (detail::slice_bounds< range_difference_type_t< D >, detail::from_end_< range_difference_type_t< D >>> offs) const &-> decltype(std::declval< Slice >()(std::declval< D const & >(), offs.from, offs.to)) | 
|   | 
| auto  | operator[] (detail::slice_bounds< range_difference_type_t< D >, detail::from_end_< range_difference_type_t< D >>> offs) &&-> decltype(std::declval< Slice >()(std::declval< D >(), offs.from, offs.to)) | 
|   | 
| auto  | operator[] (detail::slice_bounds< detail::from_end_< range_difference_type_t< D >>, detail::from_end_< range_difference_type_t< D >>> offs) &-> decltype(std::declval< Slice >()(std::declval< D & >(), offs.from, offs.to)) | 
|   | 
| auto  | operator[] (detail::slice_bounds< detail::from_end_< range_difference_type_t< D >>, detail::from_end_< range_difference_type_t< D >>> offs) const &-> decltype(std::declval< Slice >()(std::declval< D const & >(), offs.from, offs.to)) | 
|   | 
| auto  | operator[] (detail::slice_bounds< detail::from_end_< range_difference_type_t< D >>, detail::from_end_< range_difference_type_t< D >>> offs) &&-> decltype(std::declval< Slice >()(std::declval< D >(), offs.from, offs.to)) | 
|   | 
| auto  | operator[] (detail::slice_bounds< range_difference_type_t< D >, end_fn > offs) &-> decltype(std::declval< Slice >()(std::declval< D & >(), offs.from, offs.to)) | 
|   | 
| auto  | operator[] (detail::slice_bounds< range_difference_type_t< D >, end_fn > offs) const &-> decltype(std::declval< Slice >()(std::declval< D const & >(), offs.from, offs.to)) | 
|   | 
| auto  | operator[] (detail::slice_bounds< range_difference_type_t< D >, end_fn > offs) &&-> decltype(std::declval< Slice >()(std::declval< D >(), offs.from, offs.to)) | 
|   | 
| auto  | operator[] (detail::slice_bounds< detail::from_end_< range_difference_type_t< D >>, end_fn > offs) &-> decltype(std::declval< Slice >()(std::declval< D & >(), offs.from, offs.to)) | 
|   | 
| auto  | operator[] (detail::slice_bounds< detail::from_end_< range_difference_type_t< D >>, end_fn > offs) const &-> decltype(std::declval< Slice >()(std::declval< D const & >(), offs.from, offs.to)) | 
|   | 
| auto  | operator[] (detail::slice_bounds< detail::from_end_< range_difference_type_t< D >>, end_fn > offs) &&-> decltype(std::declval< Slice >()(std::declval< D >(), offs.from, offs.to)) | 
|   | 
| 
constexpr range_size_type_t< D >  | size () const noexcept | 
|   | Access the size of the range, if it can be determined: 
  | 
|   | 
| 
constexpr range_size_type_t< D >  | size () const | 
|   | 
| 
  | view_interface (view_interface &&)=default | 
|   | 
| 
  | view_interface (view_interface const &)=default | 
|   |