Range-v3 Range algorithms, views, and actions for the Standard Library |

Public Types | Public Member Functions | Public Attributes | List of all members
ranges::cartesian_product_view< Views > Class Template Reference
Inheritance diagram for ranges::cartesian_product_view< Views >:

## Public Types
using | value_type = std::tuple< range_value_t< Views >... >

## Public Member Functions
template<typename Diff >
auto | advance (Diff n) -> void requires cartesian_produce_view_can_random< IsConst, Views... > &&detail::integer_like_< Diff >
| cursor ()=default
| cursor (begin_tag, constify_if< cartesian_product_view > &view)
template<bool Other>
requires IsConst_ &&!Other | cursor (cursor< Other > that)
| cursor (end_tag, constify_if< cartesian_product_view > &view)
auto | distance_to (cursor const &that) const requires cartesian_produce_view_can_distance< IsConst
bool | equal (cursor const &that) const
bool | equal (default_sentinel_t) const
void | next ()
auto | prev () -> void requires cartesian_produce_view_can_bidi< IsConst, Views... >
common_tuple< range_reference_t< Views >... > | read () const
Public Member Functions inherited from ranges::view_facade< cartesian_product_view< Views... >, detail::cartesian_product_cardinality< Views... >::value >
constexpr auto | begin () -> detail::facade_iterator_t< D > requires same_as< D, cartesian_product_view< Views... > >
| 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...
constexpr auto | begin () const -> detail::facade_iterator_t< D const > requires same_as< D, cartesian_product_view< Views... > >
| This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
constexpr auto | end () -> detail::facade_sentinel_t< D > requires same_as< D, cartesian_product_view< Views... > >
| 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...
constexpr auto | end () const -> detail::facade_sentinel_t< D const > requires same_as< D, cartesian_product_view< Views... > >
| This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
Public Member Functions inherited from ranges::view_interface< cartesian_product_view< Views... >, Cardinality >
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.
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.
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:
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))
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
constexpr auto | front () -> range_reference_t< D< True >> requires True &&forward_range< D< True >>
| Access the first element in a range:
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.
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.
requires True &&constexpr detail::can_empty_< D< True > > | operator bool () noexcept(noexcept(ranges::empty(std::declval< D< True > & >())))
view_interface & | operator= (view_interface &&)=default
view_interface & | operator= (view_interface const &)=default
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.
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.
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.
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.
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.
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.
requires True &&constexpr input_range< D< True > & > auto | operator[] (detail::slice_bounds< range_difference_t< D< True >>> offs) &
| Python-ic slicing:
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.
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.
constexpr auto | operator[] (range_difference_t< D< True >> n) -> range_reference_t< D< True >> requires True &&random_access_range< D< True >>
| Simple indexing:
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.
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.
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

## Public Attributes
auto | Views

## Additional Inherited Members
Static Public Member Functions inherited from ranges::view_interface< cartesian_product_view< Views... >, Cardinality >
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 inherited from ranges::view_interface< cartesian_product_view< Views... >, Cardinality >
using | D = meta::invoke< detail::dependent_< B >, cartesian_product_view< Views... > >
Protected Member Functions inherited from ranges::view_facade< cartesian_product_view< Views... >, detail::cartesian_product_cardinality< Views... >::value >
constexpr view_as_cursor | begin_cursor () const
constexpr default_sentinel_t | end_cursor () const
Protected Member Functions inherited from ranges::view_interface< cartesian_product_view< Views... >, Cardinality >
constexpr const cartesian_product_view< Views... > & | derived () 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 cartesian_product_view< Views... > & | derived () noexcept
Protected Attributes inherited from ranges::view_facade< cartesian_product_view< Views... >, detail::cartesian_product_cardinality< Views... >::value >
friend | range_access

## Member Data Documentation

## ◆ Views

template<typename... Views>

auto ranges::cartesian_product_view< Views >::Views

Initial value:
{
return distance_(that, meta::size_t<sizeof...(Views)>{})
meta::size_t
std::integral_constant< std::size_t, N > size_t
An integral constant wrapper for std::size_t.
Definition: meta.hpp:163