constexpr explicit cartesian_product_view(First first_base, Vs... bases);
constexpr iterator<false> begin()
requires (!simple-view<First> || ... || !simple-view<Vs>);
constexpr iterator<false> end()
requires ((!simple-view<First> || ... || !simple-view<Vs>)
&& cartesian-product-is-common<First, Vs...>);
constexpr iterator<true> end() const
requires cartesian-product-is-common<const First, const Vs...>;
constexpr default_sentinel_t end() const noexcept;
constexpr see below size()
requires cartesian-product-is-sized<First, Vs...>;
constexpr see below size() const
requires cartesian-product-is-sized<const First, const Vs...>;