Defined in header <concepts> | ||
---|---|---|
template < class F, class... Args > concept Predicate = std::RegularInvocable<F, Args...> && std::Boolean<std::invoke_result_t<F, Args...>>; | (since C++20) |
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.
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.
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
http://en.cppreference.com/w/cpp/concepts/Predicate