#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 ()
{
binary_compose<logical_and<bool>, odd, positive>
b (logical_and<bool> (), odd (), positive ());
int* p = find_if (array, array + 6, b);
if (p != array + 6)
cout << *p << " is odd and positive" << endl;
return 0;
}