#include <iostream.h>
#include <stl.h>
struct odd : public unary_function<int, bool>
{
odd () {}
bool operator () (int n_) const { return (n_ % 2) == 1; }
};
struct positive : public unary_function<int, bool>
{
positive () {}
bool operator () (int n_) const { return n_ >= 0; }
};
int array [6] = { -2, -1 , 0, 1, 2, 3 };
int main ()
{
int* p = find_if (array, array + 6,
compose2 (logical_and<bool> (), odd (), positive ()));
if (p != array + 6)
cout << *p << " is odd and positive" << endl;
return 0;
}