7.3 KiB
[indirectcallable.indirectinvocable]
24 Iterators library [iterators]
24.3 Iterator requirements [iterator.requirements]
24.3.6 Indirect callable requirements [indirectcallable]
24.3.6.3 Indirect callables [indirectcallable.indirectinvocable]
The indirect callable concepts are used to constrain those algorithms that accept callable objects ([func.def]) as arguments.
namespace std {template<class F, class I>concept indirectly_unary_invocable =indirectly_readable &©_constructible &&invocable<F&, indirect-value-t> &&invocable<F&, iter_reference_t> &&common_reference_with< invoke_result_t<F&, indirect-value-t>, invoke_result_t<F&, iter_reference_t>>; template<class F, class I>concept indirectly_regular_unary_invocable =indirectly_readable &©_constructible &®ular_invocable<F&, indirect-value-t> &®ular_invocable<F&, iter_reference_t> &&common_reference_with< invoke_result_t<F&, indirect-value-t>, invoke_result_t<F&, iter_reference_t>>; template<class F, class I>concept indirect_unary_predicate =indirectly_readable &©_constructible &&predicate<F&, indirect-value-t> &&predicate<F&, iter_reference_t>; template<class F, class I1, class I2>concept indirect_binary_predicate =indirectly_readable && indirectly_readable &©_constructible &&predicate<F&, indirect-value-t, indirect-value-t> &&predicate<F&, indirect-value-t, iter_reference_t> &&predicate<F&, iter_reference_t, indirect-value-t> &&predicate<F&, iter_reference_t, iter_reference_t>; template<class F, class I1, class I2 = I1>concept indirect_equivalence_relation =indirectly_readable && indirectly_readable &©_constructible &&equivalence_relation<F&, indirect-value-t, indirect-value-t> &&equivalence_relation<F&, indirect-value-t, iter_reference_t> &&equivalence_relation<F&, iter_reference_t, indirect-value-t> &&equivalence_relation<F&, iter_reference_t, iter_reference_t>; template<class F, class I1, class I2 = I1>concept indirect_strict_weak_order =indirectly_readable && indirectly_readable &©_constructible &&strict_weak_order<F&, indirect-value-t, indirect-value-t> &&strict_weak_order<F&, indirect-value-t, iter_reference_t> &&strict_weak_order<F&, iter_reference_t, indirect-value-t> &&strict_weak_order<F&, iter_reference_t, iter_reference_t>;}