std::experimental::ranges::IndirectInvocable, std::experimental::ranges::IndirectRegularInvocable - cppreference.com

##### cppreference.com

##### Search

Create account

##### Namespaces

- Page
- Discussion

##### Variants

##### Views

- View
- Edit
- History

##### Actions

# std::experimental::ranges::IndirectInvocable, std::experimental::ranges::IndirectRegularInvocable

From cppreference.com
< cpp‎ | experimental‎ | ranges

Defined in header `<experimental/ranges/iterator>` |  |
template <class F> concept bool IndirectInvocable() { return ranges::Invocable<F>(); } | (1) | (ranges TS)
template <class F, class I> concept bool IndirectInvocable() { return ranges::Readable<I>() && ranges::Invocable<F, ranges::value_type_t<I>>() && ranges::Invocable<F, ranges::reference_t<I>>() && ranges::Invocable<F, ranges::iter_common_reference_t<I>>(); } | (2) | (ranges TS)
template <class F, class I1, class I2> concept bool IndirectInvocable() { return ranges::Readable<I1>() && ranges::Readable<I2>() && ranges::Invocable<F, ranges::value_type_t<I1>, ranges::value_type_t<I2>>() && ranges::Invocable<F, ranges::value_type_t<I1>, ranges::reference_t<I2>>() && ranges::Invocable<F, ranges::reference_t<I1>, ranges::value_type_t<I2>>() && ranges::Invocable<F, ranges::reference_t<I1>, ranges::reference_t<I2>>() && ranges::Invocable<F, ranges::iter_common_reference_t<I1>, ranges::iter_common_reference_t<I2>>(); } | (3) | (ranges TS)
template <class F> concept bool IndirectRegularInvocable() { return ranges::RegularInvocable<F>(); } | (4) | (ranges TS)
template <class F, class I> concept bool IndirectRegularInvocable() { return ranges::Readable<I>() && ranges::RegularInvocable<F, ranges::value_type_t<I>>() && ranges::RegularInvocable<F, ranges::reference_t<I>>() && ranges::RegularInvocable<F, ranges::iter_common_reference_t<I>>(); } | (5) | (ranges TS)
template <class F, class I1, class I2> concept bool IndirectRegularInvocable() { return ranges::Readable<I1>() && ranges::Readable<I2>() && ranges::RegularInvocable<F, ranges::value_type_t<I1>, ranges::value_type_t<I2>>() && ranges::RegularInvocable<F, ranges::value_type_t<I1>, ranges::reference_t<I2>>() && ranges::RegularInvocable<F, ranges::reference_t<I1>, ranges::value_type_t<I2>>() && ranges::RegularInvocable<F, ranges::reference_t<I1>, ranges::reference_t<I2>>() && ranges::RegularInvocable<F, ranges::iter_common_reference_t<I1>, ranges::iter_common_reference_t<I2>>(); } | (6) | (ranges TS)

| This section is incomplete Reason: add description and extra caveats

Retrieved from "http://en.cppreference.com/mwiki/index.php?title=cpp/experimental/ranges/iterator/IndirectInvocable&oldid=89726"
Category:

- Todo with reason