Range-v3
Range algorithms, views, and actions for the Standard Library
ranges::view_interface< Derived, Cardinality > Struct Template Referenceabstract
+ Inheritance diagram for ranges::view_interface< Derived, Cardinality >:

Friends

template<bool True = true>
auto operator<< (std::ostream &sout, Derived &&rng) -> std::ostream &requires True &&(!range< D< True > const >)&&input_range< D< True >>
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
 
template<bool True = true>
auto operator<< (std::ostream &sout, Derived &rng) -> std::ostream &requires True &&(!range< D< True > const >)&&input_range< D< True >>
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
 
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.
 

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 >
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
 
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 >
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
 
constexpr auto empty () const noexcept -> bool requires(detail::has_fixed_size_(Cardinality))
 
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 >
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
 
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 >
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
 
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 >>
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
 
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 >>
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
 
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
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
 
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
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
 
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
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
 
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
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
 
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
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
 
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
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
 
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 >
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
 
template<bool True = true>
requires True &&constexpr detail::can_empty_< D< True > const > operator bool () const noexcept(noexcept(ranges::empty(std::declval< 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.
 
template<bool True = true>
requires True &&constexpr detail::can_empty_< D< True > > operator bool () noexcept(noexcept(ranges::empty(std::declval< D< True > & >())))
 
view_interfaceoperator= (view_interface &&)=default
 
view_interfaceoperator= (view_interface const &)=default
 
template<bool True = true, typename Slice = views::slice_fn>
requires True &&input_range< D< True > & > &&constexpr sized_range< D< True > & > auto 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.
 
template<bool True = true, typename Slice = views::slice_fn>
requires True &&input_range< D< True > > &&constexpr sized_range< D< True > > auto 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.
 
template<bool True = true, typename Slice = views::slice_fn>
requires True &&input_range< D< True > const & > &&constexpr sized_range< D< True > const & > auto 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.
 
template<bool True = true, typename Slice = views::slice_fn>
requires True &&constexpr input_range< D< True > & > auto 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.
 
template<bool True = true, typename Slice = views::slice_fn>
requires True &&constexpr input_range< D< True > > auto 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.
 
template<bool True = true, typename Slice = views::slice_fn>
requires True &&constexpr input_range< D< True > const & > auto 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.
 
template<bool True = true, typename Slice = views::slice_fn>
requires True &&constexpr input_range< D< True > & > 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 &&constexpr input_range< D< True > > auto 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.
 
template<bool True = true, typename Slice = views::slice_fn>
requires True &&constexpr input_range< D< True > const & > auto 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.
 
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 >
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
 
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 >
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
 
 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 const Derivedderived () const noexcept
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
 
constexpr Derivedderived () noexcept