ranges::view_interface< Derived, Cardinality > Struct Template Referenceabstract
Views
Inheritance diagram for ranges::view_interface< Derived, Cardinality >:

## Friends

template<bool True = true>
auto | operator<< (std::ostream &sout, Derived const &rng) -> std::ostream &requires True &&input_range< D< True > const >
| Print a range to an ostream.
template<bool True = true>
auto | operator<< (std::ostream &sout, Derived &rng) -> std::ostream &requires True &&(!range< D< True > const >)&&input_range< D< True >>
template<bool True = true>
auto | operator<< (std::ostream &sout, Derived &&rng) -> std::ostream &requires True &&(!range< D< True > const >)&&input_range< D< True >>

## Public Member Functions

template<bool True = true>
constexpr auto | at (range_difference_t< D< True >> n) -> range_reference_t< D< True >> requires True &&random_access_range< D< True >> &&sized_range< D< True >>
| Returns a reference to the element at specified location pos, with bounds checking.
template<bool True = true>
constexpr auto | at (range_difference_t< D< True >> n) const -> range_reference_t< D< True > const > requires True &&random_access_range< D< True > const > &&sized_range< D< True > const >
template<bool True = true>
constexpr auto | back () -> range_reference_t< D< True >> requires True &&common_range< D< True >> &&bidirectional_range< D< True >>
| Access the last element in a range:
template<bool True = true>
constexpr auto | back () const -> range_reference_t< D< True > const > requires True &&common_range< D< True > const > &&bidirectional_range< D< True > const >
constexpr auto | empty () const noexcept -> bool requires(detail::has_fixed_size_(Cardinality))
template<bool True = true>
constexpr auto | empty () noexcept(noexcept(bool(ranges::size(std::declval< D< True > &>())==0))) -> bool requires True &&(Cardinality< 0) &&(Cardinality !=infinite) &&(!forward_range< D< True >>)&&sized_range< D< True >>
template<bool True = true>
constexpr auto | empty () const noexcept(noexcept(bool(ranges::size(std::declval< D< True > const &>())==0))) -> bool requires True &&(Cardinality< 0) &&(Cardinality !=infinite) &&(!forward_range< D< True > const >)&&sized_range< D< True > const >
template<bool True = true>
constexpr auto | empty () noexcept(noexcept(bool(ranges::begin(std::declval< D< True > &>())==ranges::end(std::declval< D< True > &>())))) -> bool requires True &&(!detail::has_fixed_size_(Cardinality)) &&forward_range< D< True >>
template<bool True = true>
constexpr auto | empty () const noexcept(noexcept(bool(ranges::begin(std::declval< D< True > const &>())==ranges::end(std::declval< D< True > const &>())))) -> bool requires True &&(!detail::has_fixed_size_(Cardinality)) &&forward_range< D< True > const >
template<bool True = true, typename Slice = views::slice_fn>
requires True && | forward_range (input_range< D< True > &> &&sized_range< D< True > &>)) const expr auto operator[](detail
template<bool True = true, typename Slice = views::slice_fn>
requires True && | forward_range (input_range< D< True > const &> &&sized_range< D< True > const &>)) const expr auto operator[](detail
template<bool True = true, typename Slice = views::slice_fn>
requires True && | forward_range (input_range< D< True >> &&sized_range< D< True >>)) const expr auto operator[](detail
template<bool True = true, typename Slice = views::slice_fn>
requires True && | forward_range (input_range< D< True > &> &&sized_range< D< True > &>)) const expr auto operator[](detail
template<bool True = true, typename Slice = views::slice_fn>
requires True && | forward_range (input_range< D< True > const &> &&sized_range< D< True > const &>)) const expr auto operator[](detail
template<bool True = true, typename Slice = views::slice_fn>
requires True && | forward_range (input_range< D< True >> &&sized_range< D< True >>)) const expr auto operator[](detail
template<bool True = true>
constexpr auto | front () -> range_reference_t< D< True >> requires True &&forward_range< D< True >>
| Access the first element in a range:
template<bool True = true>
constexpr auto | front () const -> range_reference_t< D< True > const > requires True &&forward_range< D< True > const >
template<bool True = true>
requires True &&detail::can_empty_< D< True > > constexpr | operator bool () noexcept(noexcept(ranges::empty(std::declval< D< True > &>())))
template<bool True = true>
requires True &&detail::can_empty_< D< True > const > constexpr | operator bool () const noexcept(noexcept(ranges::empty(std::declval< D< True > const &>())))
view_interface & | operator= (view_interface &&)=default
view_interface & | operator= (view_interface const &)=default
template<bool True = true>
constexpr auto | operator[] (range_difference_t< D< True >> n) -> range_reference_t< D< True >> requires True &&random_access_range< D< True >>
| Simple indexing:
template<bool True = true>
constexpr auto | operator[] (range_difference_t< D< True >> n) const -> range_reference_t< D< True > const > requires True &&random_access_range< D< True > const >
template<bool True = true, typename Slice = views::slice_fn>
requires True &&input_range< D< True > & > constexpr auto | operator[] (detail::slice_bounds< range_difference_t< D< True >>> offs) &
| Python-ic slicing:
template<bool True = true, typename Slice = views::slice_fn>
requires True &&input_range< D< True > const & > constexpr auto | operator[] (detail::slice_bounds< range_difference_t< D< True >>> offs) const &
template<bool True = true, typename Slice = views::slice_fn>
requires True &&input_range< D< True > > constexpr auto | operator[] (detail::slice_bounds< range_difference_t< D< True >>> offs) &&
template<bool True = true, typename Slice = views::slice_fn>
requires True &&input_range< D< True > & > &&sized_range< D< True > & > constexpr auto | operator[] (detail::slice_bounds< range_difference_t< D< True >>, detail::from_end_of_t< D< True >>> offs) &
template<bool True = true, typename Slice = views::slice_fn>
requires True &&input_range< D< True > const & > &&sized_range< D< True > const & > constexpr auto | operator[] (detail::slice_bounds< range_difference_t< D< True >>, detail::from_end_of_t< D< True >>> offs) const &
template<bool True = true, typename Slice = views::slice_fn>
requires True &&input_range< D< True > > &&sized_range< D< True > > constexpr auto | operator[] (detail::slice_bounds< range_difference_t< D< True >>, detail::from_end_of_t< D< True >>> offs) &&
template<bool True = true, typename Slice = views::slice_fn>
requires True &&input_range< D< True > & > constexpr auto | operator[] (detail::slice_bounds< range_difference_t< D< True >>, end_fn > offs) &
template<bool True = true, typename Slice = views::slice_fn>
requires True &&input_range< D< True > const & > constexpr auto | operator[] (detail::slice_bounds< range_difference_t< D< True >>, end_fn > offs) const &
template<bool True = true, typename Slice = views::slice_fn>
requires True &&input_range< D< True > > constexpr auto | operator[] (detail::slice_bounds< range_difference_t< D< True >>, end_fn > offs) &&
template<bool True = true>
constexpr auto | size () -> detail::iter_size_t< iterator_t< D< True >>> requires True &&(Cardinality< 0) &&sized_sentinel_for< sentinel_t< D< True >>, iterator_t< D< True >>> &&forward_range< D< True >>
| If `sized_sentinel_for<sentinel_t<Derived>, iterator_t<Derived>>` is satisfied, and if `Derived` is a `forward_range`, then return `end - begin` cast to an unsigned integer.
template<bool True = true>
constexpr auto | size () const -> detail::iter_size_t< iterator_t< D< True >>> requires True &&(Cardinality< 0) &&sized_sentinel_for< sentinel_t< D< True > const >, iterator_t< D< True > const >> &&forward_range< D< True > const >
| view_interface (view_interface &&)=default
| view_interface (view_interface const &)=default

## Static Public Member Functions

template<bool True = true, int = 42>
static constexpr auto | size () noexcept -> std::size_t requires True &&(Cardinality >=0)
| If the size of the range is known at compile-time and finite, return it.

## Protected Types

template<bool B>
using | D = meta::invoke< detail::dependent_< B >, Derived >

## Protected Member Functions

constexpr Derived & | derived () noexcept
constexpr Derived const & | derived () const noexcept

## Methods

## operator<< [1/2]

template<typename Derived, cardinality Cardinality>
template<bool True = true>

auto operator<< | ( | std::ostream & | sout,
|  | Derived & | rng
| ) |  | -> std::ostream & requires True && (!range<D<True> const>)&&input_range<D<True>>

friend

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

## operator<< [2/2]

template<typename Derived, cardinality Cardinality>
template<bool True = true>

auto operator<< | ( | std::ostream & | sout,
|  | Derived && | rng
| ) |  | -> std::ostream & requires True && (!range<D<True> const>)&&input_range<D<True>>

friend

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

## Member Function Documentation

## at()

template<typename Derived, cardinality Cardinality>
template<bool True = true>

constexpr auto ranges::view_interface< Derived, Cardinality >::at | ( | range_difference_t< D< True >> | n | ) | const -> range_reference_t<D<True> const> requires True && random_access_range<D<True> const> && sized_range<D<True> const>

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

## back()

template<typename Derived, cardinality Cardinality>
template<bool True = true>

constexpr auto ranges::view_interface< Derived, Cardinality >::back | ( |  | ) | const -> range_reference_t<D<True> const> requires True && common_range<D<True> const> && bidirectional_range<D<True> const>

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

## derived()

template<typename Derived, cardinality Cardinality>

constexpr Derived const& ranges::view_interface< Derived, Cardinality >::derived | ( |  | ) | const

protected noexcept

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

## empty() [1/4]

template<typename Derived, cardinality Cardinality>
template<bool True = true>

constexpr auto ranges::view_interface< Derived, Cardinality >::empty | ( |  | ) | -> bool requires True && (Cardinality < 0) && (Cardinality != infinite) && (!forward_range<D<True>>)&&sized_range<D<True>>

noexcept

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

## empty() [2/4]

template<typename Derived, cardinality Cardinality>
template<bool True = true>

constexpr auto ranges::view_interface< Derived, Cardinality >::empty | ( |  | ) | const -> bool requires True && (Cardinality < 0) && (Cardinality != infinite) && (!forward_range<D<True> const>)&&sized_range<D<True> const>

noexcept

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

## empty() [3/4]

template<typename Derived, cardinality Cardinality>
template<bool True = true>

constexpr auto ranges::view_interface< Derived, Cardinality >::empty | ( |  | ) | -> bool requires True && (!detail::has_fixed_size_(Cardinality)) && forward_range<D<True>>

noexcept

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

## empty() [4/4]

template<typename Derived, cardinality Cardinality>
template<bool True = true>

constexpr auto ranges::view_interface< Derived, Cardinality >::empty | ( |  | ) | const -> bool requires True && (!detail::has_fixed_size_(Cardinality)) && forward_range<D<True> const>

noexcept

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

## forward_range() [1/6]

template<typename Derived, cardinality Cardinality>
template<bool True = true, typename Slice = views::slice_fn>

requires True&& ranges::view_interface< Derived, Cardinality >::forward_range | ( | input_range< D< True > &> &&sized_range< D< True > &> |  | ) | const

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

## forward_range() [2/6]

template<typename Derived, cardinality Cardinality>
template<bool True = true, typename Slice = views::slice_fn>

requires True&& ranges::view_interface< Derived, Cardinality >::forward_range | ( | input_range< D< True > const &> &&sized_range< D< True > const &> |  | ) | const

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

## forward_range() [3/6]

template<typename Derived, cardinality Cardinality>
template<bool True = true, typename Slice = views::slice_fn>

requires True&& ranges::view_interface< Derived, Cardinality >::forward_range | ( | input_range< D< True >> &&sized_range< D< True >> |  | ) | const

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

## forward_range() [4/6]

template<typename Derived, cardinality Cardinality>
template<bool True = true, typename Slice = views::slice_fn>

requires True&& ranges::view_interface< Derived, Cardinality >::forward_range | ( | input_range< D< True > &> &&sized_range< D< True > &> |  | ) | const

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

## forward_range() [5/6]

template<typename Derived, cardinality Cardinality>
template<bool True = true, typename Slice = views::slice_fn>

requires True&& ranges::view_interface< Derived, Cardinality >::forward_range | ( | input_range< D< True > const &> &&sized_range< D< True > const &> |  | ) | const

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

## forward_range() [6/6]

template<typename Derived, cardinality Cardinality>
template<bool True = true, typename Slice = views::slice_fn>

requires True&& ranges::view_interface< Derived, Cardinality >::forward_range | ( | input_range< D< True >> &&sized_range< D< True >> |  | ) | const

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

## front()

template<typename Derived, cardinality Cardinality>
template<bool True = true>

constexpr auto ranges::view_interface< Derived, Cardinality >::front | ( |  | ) | const -> range_reference_t<D<True> const> requires True && forward_range<D<True> const>

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

## operator bool()

template<typename Derived, cardinality Cardinality>
template<bool True = true>

requires True&& detail::can_empty_<D<True> const> constexpr ranges::view_interface< Derived, Cardinality >::operator bool | ( |  | ) | const

explicit noexcept

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

## operator[]() [1/9]

template<typename Derived, cardinality Cardinality>
template<bool True = true>

constexpr auto ranges::view_interface< Derived, Cardinality >::operator[] | ( | range_difference_t< D< True >> | n | ) | const -> range_reference_t<D<True> const> requires True && random_access_range<D<True> const>

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

## operator[]() [2/9]

template<typename Derived, cardinality Cardinality>
template<bool True = true, typename Slice = views::slice_fn>

requires True&& input_range<D<True> const &> constexpr auto ranges::view_interface< Derived, Cardinality >::operator[] | ( | detail::slice_bounds< range_difference_t< D< True >>> | offs | ) | const &

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

## operator[]() [3/9]

template<typename Derived, cardinality Cardinality>
template<bool True = true, typename Slice = views::slice_fn>

requires True&& input_range<D<True> > constexpr auto ranges::view_interface< Derived, Cardinality >::operator[] | ( | detail::slice_bounds< range_difference_t< D< True >>> | offs | ) | &&

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

## operator[]() [4/9]

template<typename Derived, cardinality Cardinality>
template<bool True = true, typename Slice = views::slice_fn>

requires True&& input_range<D<True> &>&& sized_range<D<True> &> constexpr auto ranges::view_interface< Derived, Cardinality >::operator[] | ( | detail::slice_bounds< range_difference_t< D< True >>, detail::from_end_of_t< D< True >>> | offs | ) | &

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

## operator[]() [5/9]

template<typename Derived, cardinality Cardinality>
template<bool True = true, typename Slice = views::slice_fn>

requires True&& input_range<D<True> const &>&& sized_range<D<True> const &> constexpr auto ranges::view_interface< Derived, Cardinality >::operator[] | ( | detail::slice_bounds< range_difference_t< D< True >>, detail::from_end_of_t< D< True >>> | offs | ) | const &

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

## operator[]() [6/9]

template<typename Derived, cardinality Cardinality>
template<bool True = true, typename Slice = views::slice_fn>

requires True&& input_range<D<True> >&& sized_range<D<True> > constexpr auto ranges::view_interface< Derived, Cardinality >::operator[] | ( | detail::slice_bounds< range_difference_t< D< True >>, detail::from_end_of_t< D< True >>> | offs | ) | &&

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

## operator[]() [7/9]

template<typename Derived, cardinality Cardinality>
template<bool True = true, typename Slice = views::slice_fn>

requires True&& input_range<D<True> &> constexpr auto ranges::view_interface< Derived, Cardinality >::operator[] | ( | detail::slice_bounds< range_difference_t< D< True >>, end_fn > | offs | ) | &

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

## operator[]() [8/9]

template<typename Derived, cardinality Cardinality>
template<bool True = true, typename Slice = views::slice_fn>

requires True&& input_range<D<True> const &> constexpr auto ranges::view_interface< Derived, Cardinality >::operator[] | ( | detail::slice_bounds< range_difference_t< D< True >>, end_fn > | offs | ) | const &

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

## operator[]() [9/9]

template<typename Derived, cardinality Cardinality>
template<bool True = true, typename Slice = views::slice_fn>

requires True&& input_range<D<True> > constexpr auto ranges::view_interface< Derived, Cardinality >::operator[] | ( | detail::slice_bounds< range_difference_t< D< True >>, end_fn > | offs | ) | &&

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

## size()

template<typename Derived, cardinality Cardinality>
template<bool True = true>

constexpr auto ranges::view_interface< Derived, Cardinality >::size | ( |  | ) | const -> detail::iter_size_t<iterator_t<D<True>>> requires True && (Cardinality < 0) && sized_sentinel_for<sentinel_t<D<True> const>, iterator_t<D<True> const>> && forward_range<D<True> const>

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.