Namespaces
Variants

std::experimental::ranges:: Predicate

From cppreference.net
template < class F, class ... Args >

concept bool Predicate =
RegularInvocable < F, Args... > &&

Boolean < std:: result_of_t < F && ( Args && ... ) >> ;
(ranges TS)

Das Konzept Predicate<F, Args...> spezifiziert, dass F ein Prädikat ist, das Argumente akzeptiert, deren Typen und Wertkategorien durch Args... kodiert sind, d.h. es kann mit diesen Argumenten aufgerufen werden, um ein Boolean -Ergebnis zu liefern.

Beachten Sie, dass RegularInvocable erfordert, dass der Aufruf weder das aufrufbare Objekt noch die Argumente verändert und gleichheitserhaltend ist.

Gleichheitserhaltung

Ein Ausdruck ist gleichheitserhaltend , wenn er bei gleichen Eingaben gleiche Ausgaben liefert.

  • Die Eingaben eines Ausdrucks bestehen aus seinen Operanden.
  • Die Ausgaben eines Ausdrucks bestehen aus seinem Ergebnis und allen durch den Ausdruck modifizierten Operanden (falls vorhanden).

Jeder Ausdruck, der gleichungserhaltend sein muss, muss darüber hinaus stabil sein: Zwei Auswertungen eines solchen Ausdrucks mit denselben Eingabeobjekten müssen gleiche Ausgaben liefern, sofern keine explizite Änderung dieser Eingabeobjekte zwischen den Auswertungen erfolgt.