Namespaces
Variants

std::experimental::ranges:: CommonReference

From cppreference.net
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> spezifiziert, dass zwei Typen T und U einen gemeinsamen Referenztyp (berechnet durch ranges::common_reference_t ) teilen, zu dem beide konvertiert werden können.

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

Mit anderen Worten, die Umwandlung in den gemeinsamen Referenztyp darf die Gleichheitserhaltungseigenschaft des ursprünglichen Ausdrucks nicht verändern.

Gleichheitserhaltung

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

  • Die Eingaben eines Ausdrucks bestehen aus seinen Operanden.
  • Die Ausgaben eines Ausdrucks bestehen aus seinem Ergebnis und allen durch den Ausdruck modifizierten Operanden (falls vorhanden).

Jeder Ausdruck, der gleichungserhaltend sein muss, muss darüber hinaus stabil sein: Zwei Auswertungen eines solchen Ausdrucks mit denselben Eingabeobjekten müssen gleiche Ausgaben liefern, sofern keine explizite Änderung dieser Eingabeobjekte zwischen den Auswertungen erfolgt.

Siehe auch

Bestimmt den gemeinsamen Referenztyp einer Menge von Typen
(Klassen-Template)
Spezifiziert, dass zwei Typen einen gemeinsamen Typ teilen
(Konzept)
Bestimmt den gemeinsamen Typ einer Menge von Typen
(Klassen-Template)