Namespaces
Variants

std::experimental::ranges:: Predicate

From cppreference.net
Определено в заголовке <experimental/ranges/concepts>
template < class F, class ... Args >

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

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

Концепт Predicate<F, Args...> определяет, что F является предикатом, принимающим аргументы, чьи типы и категории значений закодированы в Args... , то есть он может быть вызван с этими аргументами для получения Boolean результата.

Обратите внимание, что RegularInvocable требует, чтобы вызов не изменял ни вызываемый объект, ни аргументы и был сохраняющим равенство.

Сохранение равенства

Выражение называется сохраняющим равенство если оно даёт равные результаты при равных входных данных.

  • Входные данные выражения состоят из его операндов.
  • Выходные данные выражения состоят из его результата и всех операндов, измененных выражением (если таковые имеются).

Каждое выражение, которое должно сохранять равенство, дополнительно должно быть стабильным : два вычисления такого выражения с одинаковыми входными объектами должны давать равные результаты при отсутствии каких-либо явных изменений этих входных объектов между вычислениями.