Namespaces
Variants
Actions

std::predicate

From cppreference.com
< cpp‎ | concepts
 
C++
 
Concepts library
Defined in header <concepts>
template< class F, class... Args >

concept predicate =
    std::regular_invocable<F, Args...> &&

    boolean-testable<std::invoke_result_t<F, Args...>>;
(since C++20)

The concept std::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-testable result.

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

[edit] Equality preservation

Expressions declared in requires expressions of the standard library concepts are required to be equality-preserving (except where stated otherwise).

[edit] References

  • C++23 standard (ISO/IEC 14882:2024):
  • 18.7.4 Concept predicate [concept.predicate]
  • C++20 standard (ISO/IEC 14882:2020):
  • 18.7.4 Concept predicate [concept.predicate]

Follow Lee on X/Twitter - Father, Husband, Serial builder creating AI, crypto, games & web tools. We are friends :) AI Will Come To Life!

Check out: eBank.nz (Art Generator) | Netwrck.com (AI Tools) | Text-Generator.io (AI API) | BitBank.nz (Crypto AI) | ReadingTime (Kids Reading) | RewordGame | BigMultiplayerChess | WebFiddle | How.nz | Helix AI Assistant