std::experimental::ranges::CommonReference - cppreference.com (original) (raw)

The concept CommonReference<T, U> specifies that two types T and U share a common reference type (as computed by ranges::common_reference_t) to which both can be converted.

CommonReference<T, U> is satisfied only if, given expressions t and u such that decltype((t)) is T and decltype((u)) is U,

In other words, the conversion to the common reference type must not alter the equality-preservation property of the original expression.

[edit] Equality preservation

An expression is equality preserving if it results in equal outputs given equal inputs.

Every expression required to be equality preserving is further required to be stable: two evaluations of such an expression with the same input objects must have equal outputs absent any explicit intervening modification of those input objects.

[edit] See also