template <class F, class I>
concept bool IndirectPredicate() {
return ranges::Readable<I>()
&& ranges::Predicate<F, ranges::value_type_t<I>>()
&& ranges::Predicate<F, ranges::reference_t<I>>()
&& ranges::Predicate<F, ranges::iter_common_reference_t<I>>();
}
template <class F, class I1, class I2>
concept bool IndirectPredicate() {
return ranges::Readable<I1>() && ranges::Readable<I2>()
&& ranges::Predicate<F, ranges::value_type_t<I1>, ranges::value_type_t<I2>>()
&& ranges::Predicate<F, ranges::value_type_t<I1>, ranges::reference_t<I2>>()
&& ranges::Predicate<F, ranges::reference_t<I1>, ranges::value_type_t<I2>>()
&& ranges::Predicate<F, ranges::reference_t<I1>, ranges::reference_t<I2>>()
&& ranges::Predicate<F, ranges::iter_common_reference_t<I1>,
ranges::iter_common_reference_t<I2>>();
} |
|
(ranges TS) |