The C++20 std::views::filter produces a view of elements from the underlying range that satisfy the provided predicate (skipping over those that do not).
The view models up to a bidirectional range (based on the underlying range's properties) and supports a common range interface (if provided by the underlying range).
Compiler Explorer link: https://compiler-explorer.com/z/vn1KTK494