Namensräume
Varianten
Aktionen

std::experimental::ranges::Relation

Von cppreference.com
< cpp‎ | experimental‎ | ranges
 
 
 
 
Konzeptbibliothek
Kernsprachen-Konzepte
                              
Objektkonzepte
                              
                              
Vergleichskonzepte
Aufrufbare Konzepte
                                        
Relation
                              
URNG-Konzept
 
Definiert 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)

Das Konzept Relation<R, T, U> spezifiziert, dass R eine binäre Relation über der Menge von Ausdrücken definiert, deren Typ und Wertkategorie durch T oder U kodiert sind.

Gegeben

  • r, ein Ausdruck, für den decltype((r)) R ist,
  • t, ein Ausdruck, für den decltype((t)) T ist,
  • u, ein Ausdruck, für den decltype((u)) U ist,

und sei C ranges::common_reference_t<const std::remove_reference_t<T>&, const std::remove_reference_t<U>&>,

dann wird Relation<R, T, U> nur dann erfüllt, wenn

  • bool(r(t, u)) == bool(r(C(t), C(u))) und
  • bool(r(u, t)) == bool(r(C(u), C(t))).