Spec-Zone.ru › C++

std::indirect_unary_predicate

Определён в заголовке <iterator>
template< class F, class I >
concept indirect_unary_predicate =
    std::indirectly_readable<I> &&
    std::copy_constructible<F> &&
    std::predicate<F&, /*indirect-value-t*/<I>> &&
    std::predicate<F&, std::iter_reference_t<I>>;
(начиная с C++20)

Определение /*indirect-value-t*/ см. на этой странице.

Концепт indirect_unary_predicate задаёт требования к алгоритмам, которые вызывают унарные предикаты в качестве аргументов. Ключевое отличие этого концепта от std::predicate заключается в том, что он применяется к типу, на который ссылается I, а не к самому I.

Отчёты об ошибках

Следующие отчёты об ошибках, изменяющие поведение, были ретроактивно применены к ранее опубликованным стандартам C++.

DR Применён к Опубликованное поведение Правильное поведение
P2609R3 C++20 одно из требований было задано через std::iter_value_t<I>&
что приводило к некорректной обработке проекций и несовместимости с предикатом F&
задано через /*indirect-value-t*/<I>
для корректной обработки таких проекций
P2997R1 C++20 indirect_unary_predicate требовал, чтобы F& удовлетворял
predicate с std::iter_common_reference_t<I>
не требует

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/iterator/indirect_unary_predicate

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API