std::predicate
Определён в заголовке <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 требует, чтобы вызов не изменял ни вызываемый объект, ни аргументы и сохранял равенство.
Сохранение равенства
Выражения, объявленные в requires выражениях концептов стандартной библиотеки, должны сохранять равенство (если не указано иное).
Ссылки
- Стандарт C++23 (ISO/IEC 14882:2024):
- 18.7.4 Концепт
predicate[concept.predicate] - Стандарт C++20 (ISO/IEC 14882:2020):
- 18.7.4 Концепт
predicate[concept.predicate]
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/concepts/predicate