A predicate is simply a function that returns true or false depending on whether its input(s) satisfy some condition. In general, a predicate function should be pure; it should always return the same result when given the same input (so bool isDateInPast(Date &date)
would be a bad predicate).
They are often used, for example, as callbacks for STL sorting routines (i.e. "is input a
less than input b
?").