std::experimental::ranges::Predicate - cppreference.com (original) (raw)

The concept Predicate<F, Args...> specifies that F is a predicate that accepts arguments whose types and value categories are encoded by Args..., i.e., it can be invoked with these arguments to produce a Boolean result.

Note that RegularInvocable requires the invocation to not modify either the callable object or the arguments and be equality-preserving.

[edit] Equality preservation

An expression is equality preserving if it results in equal outputs given equal inputs.

Every expression required to be equality preserving is further required to be stable: two evaluations of such an expression with the same input objects must have equal outputs absent any explicit intervening modification of those input objects.