    template <class Predicate, class Iterator>
    filter_iterator<Predicate,Iterator>
    make_filter_iterator(Predicate f, Iterator x, Iterator end = Iterator());

Returns: | An instance of `filter_iterator<Predicate,Iterator>` where `m_iter` is either the first position in the range `[x,end)` such that `f(*this->base()) == true` or else `m_iter == end`. The member `m_pred` is constructed from `f` and `m_end` from `end`.

    template <class Predicate, class Iterator>
    filter_iterator<Predicate,Iterator>
    make_filter_iterator(Iterator x, Iterator end = Iterator());

Returns: | An instance of `filter_iterator<Predicate,Iterator>` where `m_iter` is either the first position in the range `[x,end)` such that `f(*this->base()) == true`, where `f` is a default constructed `Predicate`, or else `m_iter == end`. The member `m_pred` is default constructed and `m_end` is constructed from `end`.