Note that predicates should not modify their state due to a function call (see Section 10.1.4, page 483).
See Section 6.8, page 224, Section 6.9, page 229, Section 6.10, page 233, and Chapter 10 for
examples and details about functions, function objects, and lambdas that are used as algorithm parameters.