Namespaces
Variants

std:: indirect_unary_predicate

From cppreference.net
Iterator library
Iterator concepts
Iterator primitives
Algorithm concepts and utilities
Indirect callable concepts
indirect_unary_predicate
(C++20)
Common algorithm requirements
(C++20)
(C++20)
(C++20)
Utilities
(C++20)
Iterator adaptors
Range access
(C++11) (C++14)
(C++14) (C++14)
(C++11) (C++14)
(C++14) (C++14)
(C++17) (C++20)
(C++17)
(C++17)
Определено в заголовочном файле <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_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 >
не требует