std::ranges::cartesian_product_view<First, Vs...>::begin
From cppreference.com
< cpp | ranges | cartesian product view
C++
Feature test macros (C++20)
Concepts library (C++20)
Metaprogramming library (C++11)
Ranges library (C++20)
Filesystem library (C++17)
Concurrency support library (C++11)
Execution control library (C++26)
Ranges library
(C++23)(C++23)
(C++26)(C++26)
(C++23)(C++23)
(C++26)(C++26)
(C++26)(C++26)
(C++23)(C++23)
(C++23)(C++23)
(C++23)(C++23)
(C++23)(C++23)
(C++23)(C++23)
(C++23)
(C++23)(C++23)
(C++23)
(C++23)(C++23)
(C++23)(C++23)
(C++23)(C++23)
(C++23)(C++23)
(C++23)(C++23)
std::ranges::cartesian_product_view
cartesian_product_view::begin
Member functions
Non-member functions
constexpr iterator<false> begin()
requires (!/*simple-view*/<First> || ... || !/*simple-view*/<Vs>);
(1)
(since C++23)
requires (!/*simple-view*/<First> || ... || !/*simple-view*/<Vs>);
constexpr iterator<true> begin() const
requires (ranges::range <const First> && ... && ranges::range <const Vs>);
(2)
(since C++23)
requires (ranges::range <const First> && ... && ranges::range <const Vs>);
Returns an iterator to the first element of the cartesian_product_view.
Let bases_ be the tuple of underlying views.
1) Equivalent to return /*iterator*/<false>(
tuple-transform (ranges::begin, bases_));.2) Equivalent to return /*iterator*/<true>(
tuple-transform (ranges::begin, bases_));.Contents
[edit] Parameters
(none)
[edit] Return value
An iterator to the first element.
[edit] Example
Run this code
#include <array> #include <format> #include <iostream> #include <ranges> #include <string_view> #include <tuple> using namespace std::literals; int main() { constexpr auto a = std::array {"Curiously"sv, "Recurring"sv, "Template"sv, "Pattern"sv}; constexpr auto v = std::ranges::cartesian_product_view (a[0], a[1], a[2], a[3]); constexpr std::tuple <char const&, char const&, char const&, char const&> first{*v.begin()}; std::cout << std::format ("{}{}{}{}{}", std::get<0>(first), std::get<1>(first), std::get<2>(first), std::get<3>(first), '\n'); }
Output:
CRTP