Answer
Common adaptors include views::filter (keep elements matching a predicate), views::transform (apply a function), views::take/drop (first/skip n), views::reverse, views::join (flatten), views::split, views::iota (generate a sequence), and views::keys/values (for maps). They compose to express complex transformations declaratively.
auto first3 = std::views::iota(1) | std::views::take(3); // 1,2,3Real-world example views::iota with take generates a bounded sequence lazily without building a container.