| Home | Libraries | People | FAQ | More

##### filtered

Syntax | Code
--- | ---
Pipe | `rng | boost::adaptors::filtered(pred)`
Function | `boost::adaptors::filter(rng, pred)`

- Precondition: The `value_type` of the range is convertible to the argument type of `pred`.
- Postcondition: For all adjacent elements `[x]` in the returned range, `pred(x)` is `true`.
- Throws: Whatever the copy constructor of `pred` might throw.
- Range Category: Forward Range
- Range Return Type: `boost::filtered_range<typeof(rng)>`
- Returned Range Category: The minimum of the range category of `rng` and Bidirectional Range

###### filtered example

    #include <boost/range/adaptor/filtered.hpp>
    #include <boost/range/algorithm/copy.hpp>
    #include <boost/assign.hpp>
    #include <algorithm>
    #include <iostream>
    #include <vector>

    struct is_even
    {
        bool operator()( int x ) const { return x % 2 == 0; }
    };

    int main(int argc, const char* argv[])
    {
        using namespace boost::assign;
        using namespace boost::adaptors;

        std::vector<int> input;
        input += 1,2,3,4,5,6,7,8,9;

        boost::copy(
            input | filtered(is_even()),
            std::ostream_iterator<int>(std::cout, ","));
    }

This would produce the output:

    2,4,6,8