Namensräume
Varianten
Aktionen

std::experimental::ranges::CommonReference

Von cppreference.com
< cpp‎ | experimental‎ | ranges
 
 
 
 
Konzeptbibliothek
Kernsprachen-Konzepte
CommonReference
                              
Objektkonzepte
                              
                              
Vergleichskonzepte
Aufrufbare Konzepte
                                        
                              
URNG-Konzept
 
Definiert in Header <experimental/ranges/concepts>
template< class T, class U >

concept bool CommonReference =
    Same<ranges::common_reference_t<T, U>, ranges::common_reference_t<U, T>> &&
    ConvertibleTo<T, ranges::common_reference_t<T, U>> &&

    ConvertibleTo<U, ranges::common_reference_t<T, U>>;
(Ranges TS)

Das Konzept CommonReference<T, U> gibt an, dass zwei Typen T und U einen gemeinsamen Referenztyp (berechnet durch ranges::common_reference_t) haben, zu dem beide konvertiert werden können.

CommonReference<T, U> ist nur dann erfüllt, wenn für Ausdrücke t und u, so dass decltype((t)) T ist und decltype((u)) U ist,

Anders ausgedrückt, die Konvertierung zum gemeinsamen Referenztyp darf die Eigenschaft der Gleichheitserhaltung des ursprünglichen Ausdrucks nicht verändern.

[bearbeiten] Gleichheitserhaltung

Ein Ausdruck ist gleichheitserhaltend, wenn er bei gleichen Eingaben gleiche Ausgaben liefert.

  • Die Eingaben für einen Ausdruck bestehen aus seinen Operanden.
  • Die Ausgaben eines Ausdrucks bestehen aus seinem Ergebnis und allen von dem Ausdruck modifizierten Operanden (falls vorhanden).

Jeder Ausdruck, der gleichheitserhaltend sein muss, muss außerdem stabil sein: Zwei Auswertungen eines solchen Ausdrucks mit denselben Eingabeobjekten müssen gleiche Ausgaben liefern, solange keine explizite zwischenzeitliche Modifikation dieser Eingabeobjekte erfolgt.

[bearbeiten] Siehe auch

ermittelt den gemeinsamen Referenztyp einer Menge von Typen
(class template) [bearbeiten]
gibt an, dass zwei Typen einen gemeinsamen Typ haben
(concept) [bearbeiten]
ermittelt den gemeinsamen Typ einer Menge von Typen
(class template) [bearbeiten]