[section:filtered filtered]

[table
    [[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__
* [*Returned Range Category:] The minimum of the range category of `rng` and __bidirectional_range__

[section:filtered_example 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, ","));
}
``
[endsect]

This would produce the output:
``
2,4,6,8
``
[endsect]


