The following code example is taken from the book
C++23 - The Complete Guide
by Nicolai M. Josuttis,
Leanpub, 2026
The code is licensed under a
Creative Commons Attribution 4.0 International License.
// raw code
#include <print>
#include <string>
#include <vector>
#include <ranges>
int main()
{
std::vector<std::string> coll1{"X", "Y"};
std::vector<std::string> coll2{"A", "B"};
std::vector<std::string> coll3{"1", "2"};
std::println("coll1: {}", coll1);
std::println("coll2: {}", coll2);
std::println("coll3: {}", coll3);
// BAD:
auto vec = std::views::cartesian_product(coll1 | std::views::as_rvalue,
coll2 | std::views::as_rvalue,
coll3 | std::views::as_rvalue)
| std::ranges::to<std::vector>();
std::println("vec: {}", vec);
}