Пространства имён
Варианты
Действия

cpp/concepts/predicate: различия между версиями

Материал из cppreference.com
Olya (обсуждение | вклад)
мНет описания правки
Olya (обсуждение | вклад)
мНет описания правки
 
Строка 8: Строка 8:
}}
}}


Концепт {{co||std::predicate<F, Args...>}} определяет, что {{tt|F}} это предикат, который принимает аргументы, типы и категории значений которых закодированы {{tt|Args...}}, то есть его можно вызвать с этими аргументами для получения результата {{lconcept|boolean-testable}}.
Концепт {{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 концептов стандартной библиотеки, должны сохранять равенство (если не указано иное).