GNU g++  v5.2.1
GNU Standard C++
Collaboration diagram for Negators:

Modules

 Adaptors for pointers to functions
 

Detailed Description

The functions not1 and not2 each take a predicate functor and return an instance of unary_negate or binary_negate, respectively. These classes are functors whose operator() performs the stored predicate function and then returns the negation of the result.

For example, given a vector of integers and a trivial predicate,

struct IntGreaterThanThree
: public std::unary_function<int, bool>
{
bool operator() (int x) { return x > 3; }
};
std::find_if (v.begin(), v.end(), not1(IntGreaterThanThree()));

The call to find_if will locate the first index (i) of v for which !(v[i] > 3) is true.

The not1/unary_negate combination works on predicates taking a single argument. The not2/binary_negate combination works on predicates which take two arguments.