[range.cartesian.overview] (original) (raw)
25 Ranges library [ranges]
25.7 Range adaptors [range.adaptors]
25.7.33 Cartesian product view [range.cartesian]
25.7.33.1 Overview [range.cartesian.overview]
cartesian_product_view takes any non-zero number of ranges n and produces a view of tuples calculated by the n-ary cartesian product of the provided ranges.
Given a pack of subexpressions Es, the expression views::cartesian_product(Es...)is expression-equivalent to
- views::single(tuple())if Es is an empty pack,
- otherwise,cartesian_product_view<views::all_t<decltype((Es))>...>(Es...).
[Example 1: vector<int> v { 0, 1, 2 };for (auto&& [a, b, c] : views::cartesian_product(v, v, v)) { cout << a << ' ' << b << ' ' << c << '\n';} — _end example_]