Namespaces
Variants

std:: predicate

From cppreference.net
Определено в заголовочном файле <concepts>
template < class F, class ... Args >

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

boolean-testable < std:: invoke_result_t < F, Args... >> ;
(начиная с C++20)

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

Обратите внимание, что regular_invocable требует, чтобы вызов не изменял ни вызываемый объект, ни аргументы, и был equality-preserving .

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

Выражения, объявленные в requires выражениях концепций стандартной библиотеки, должны быть equality-preserving (если не указано иное).

Ссылки

  • Стандарт C++23 (ISO/IEC 14882:2024):
  • 18.7.4 Концепт predicate [concept.predicate]
  • Стандарт C++20 (ISO/IEC 14882:2020):
  • 18.7.4 Концепт predicate [concept.predicate]