Difference between revisions of "cpp/iterator/indirect equivalence relation"
From cppreference.com
m (→Synopsis: {{ddcl}}, decreasing the width) |
(Applied P2997R1 (Removing the common reference requirement from the indirectly invocable concepts).) |
||
Line 1: | Line 1: | ||
{{cpp/title|indirect_equivalence_relation}} | {{cpp/title|indirect_equivalence_relation}} | ||
{{cpp/iterator/navbar}} | {{cpp/iterator/navbar}} | ||
− | {{ | + | {{dcl begin}} |
+ | {{dcl header|iterator}} | ||
+ | {{dcl rev begin}} | ||
+ | {{dcl|since=c++20|until=c++26|1= | ||
template< class F, class I1, class I2 = I1 > | template< class F, class I1, class I2 = I1 > | ||
concept indirect_equivalence_relation = | concept indirect_equivalence_relation = | ||
Line 7: | Line 10: | ||
std::indirectly_readable<I2> && | std::indirectly_readable<I2> && | ||
std::copy_constructible<F> && | std::copy_constructible<F> && | ||
− | std::equivalence_relation<F&, std::iter_value_t<I1>&, std::iter_value_t<I2>&> && | + | std::equivalence_relation |
− | std::equivalence_relation<F&, std::iter_value_t<I1>&, std::iter_reference_t<I2>> && | + | <F&, std::iter_value_t<I1>&, std::iter_value_t<I2>&> && |
− | std::equivalence_relation<F&, std::iter_reference_t<I1>, std::iter_value_t<I2>&> && | + | std::equivalence_relation |
− | std::equivalence_relation<F&, std::iter_reference_t<I1>, std::iter_reference_t<I2>> && | + | <F&, std::iter_value_t<I1>&, std::iter_reference_t<I2>> && |
− | std::equivalence_relation<F&, std::iter_common_reference_t<I1>, | + | std::equivalence_relation |
− | + | <F&, std::iter_reference_t<I1>, std::iter_value_t<I2>&> && | |
+ | std::equivalence_relation | ||
+ | <F&, std::iter_reference_t<I1>, std::iter_reference_t<I2>> && | ||
+ | std::equivalence_relation | ||
+ | <F&, std::iter_common_reference_t<I1>, std::iter_common_reference_t<I2>>; | ||
}} | }} | ||
+ | {{dcl|since=c++26|1= | ||
+ | template< class F, class I1, class I2 = I1 > | ||
+ | concept indirect_equivalence_relation = | ||
+ | std::indirectly_readable<I1> && | ||
+ | std::indirectly_readable<I2> && | ||
+ | std::copy_constructible<F> && | ||
+ | std::equivalence_relation | ||
+ | <F&, std::iter_value_t<I1>&, std::iter_value_t<I2>&> && | ||
+ | std::equivalence_relation | ||
+ | <F&, std::iter_value_t<I1>&, std::iter_reference_t<I2>> && | ||
+ | std::equivalence_relation | ||
+ | <F&, std::iter_reference_t<I1>, std::iter_value_t<I2>&> && | ||
+ | std::equivalence_relation | ||
+ | <F&, std::iter_reference_t<I1>, std::iter_reference_t<I2>>; | ||
+ | }} | ||
+ | {{dcl rev end}} | ||
+ | {{dcl end}} | ||
The concept {{tt|indirect_equivalence_relation}} specifies requirements for algorithms that call equivalence relations as their arguments. The key difference between this concept and {{lc|std::equivalence_relation}} is that it is applied to the types that {{tt|I1}} and {{tt|I2}} references, rather than {{tt|I1}} and {{tt|I2}} themselves. | The concept {{tt|indirect_equivalence_relation}} specifies requirements for algorithms that call equivalence relations as their arguments. The key difference between this concept and {{lc|std::equivalence_relation}} is that it is applied to the types that {{tt|I1}} and {{tt|I2}} references, rather than {{tt|I1}} and {{tt|I2}} themselves. | ||
− | |||
− | |||
− | |||
{{langlinks|es|ja|zh}} | {{langlinks|es|ja|zh}} |
Revision as of 22:54, 23 July 2024
The concept indirect_equivalence_relation
specifies requirements for algorithms that call equivalence relations as their arguments. The key difference between this concept and std::equivalence_relation is that it is applied to the types that I1
and I2
references, rather than I1
and I2
themselves.