Content #
Not every unary or binary function that returns a Boolean value is a valid predicate.
In addition, the STL requires that predicates be stateless, meaning that they should always yield the same result for the same value. This rules out functions that modify their internal state when they are called.