| Home | Libraries | People | FAQ | More

##### find_if

###### Description

Finds the first element within a sequence with a type for which a given MPL Lambda Expression evaluates to `boost::mpl::true_`.

###### Synopsis

    template<
        typename F,
        typename Sequence
        >
    typename result_of::find_if<Sequence const, F>::type find_if(Sequence const& seq);

    template<
        typename F,
        typename Sequence
        >
    typename result_of::find_if<Sequence, F>::type find_if(Sequence& seq);

Table 1.56. Parameters

Parameter | Requirement | Description
--- | --- | ---
`seq` | A model of Forward Sequence | The sequence to search
`F` | A unary MPL Lambda Expression | The search predicate

###### Expression Semantics

    find_if<F>(seq)

Return type: An iterator of the same iterator category as the iterators of `seq`.

Semantics: Returns the first element of `seq` for which MPL Lambda Expression `F` evaluates to `boost::mpl::true_`, or ``end`(seq)` if there is no such element.

###### Complexity

Linear. At most ``result_of::size`<Sequence>::value` comparisons.

###### Header

    #include <boost/fusion/algorithm/query/find_if.hpp>
    #include <boost/fusion/include/find_if.hpp>

###### Example

    const vector<double,int> vec(1.0,2);
    assert(*find_if<is_integral<mpl::_> >(vec) == 2);
    assert(find_if<is_class<mpl::_> >(vec) == end(vec));