std::experimental::ranges::Relation
From cppreference.com
| Defined in header <experimental/ranges/concepts>
|
||
template< class R, class T, class U >
concept bool Relation =
Predicate<R, T, T> &&
Predicate<R, U, U> &&
CommonReference<
const std::remove_reference_t<T>&,
const std::remove_reference_t<U>&> &&
Predicate<R,
ranges::common_reference_t<
const std::remove_reference_t<T>&,
const std::remove_reference_t<U>&>,
ranges::common_reference_t<
const std::remove_reference_t<T>&,
const std::remove_reference_t<U>&>> &&
Predicate<R, T, U> &&
Predicate<R, U, T>;
|
(1) | (ranges TS) |
The concept Relation<R, T, U> specifies that R defines a binary relation over the set of expressions whose type and value category are those encoded by either T or U.
Given
r, an expression such thatdecltype((r))isR,t, an expression such thatdecltype((t))isT,u, an expression such thatdecltype((u))isU,
and let C be ranges::common_reference_t<const std::remove_reference_t<T>&, const std::remove_reference_t<U>&>,
then Relation<R, T, U> is satisfied only if
bool(r(t, u)) == bool(r(C(t), C(u)))andbool(r(u, t)) == bool(r(C(u), C(t))).