cpp/concepts/predicate: различия между версиями
Материал из cppreference.com
Olya (обсуждение | вклад) мНет описания правки |
Olya (обсуждение | вклад) мНет описания правки |
||
| Строка 8: | Строка 8: | ||
}} | }} | ||
Концепт {{co | Концепт {{co|std::predicate<F, Args...>}} определяет, что {{tt|F}} это предикат, который принимает аргументы, типы и категории значений которых закодированы {{tt|Args...}}, то есть его можно вызвать с этими аргументами для получения результата {{lconcept|boolean-testable}}. | ||
Обратите внимание, что {{lconcept|regular_invocable}} требует, чтобы вызов не модифицировал ни вызываемый объект, ни аргументы и [[cpp/concepts#Сохранение равенства|сохранял равенство]]. | Обратите внимание, что {{lconcept|regular_invocable}} требует, чтобы вызов не модифицировал ни вызываемый объект, ни аргументы и [[cpp/concepts#Сохранение равенства|сохранял равенство]]. | ||
Текущая версия от 05:01, 2 марта 2023
<tbody>
</tbody>
| Определено в заголовочном файле <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 концептов стандартной библиотеки, должны сохранять равенство (если не указано иное).