Namespaces
Variants

std::experimental::ranges:: Common

From cppreference.net
template < class T, class U >

concept bool Common =
Same < ranges:: common_type_t < T, U > , ranges:: common_type_t < U, T >> &&
ConvertibleTo < T, ranges:: common_type_t < T, U >> &&
ConvertibleTo < U, ranges:: common_type_t < T, U >> &&
CommonReference <
std:: add_lvalue_reference_t < const T > ,
std:: add_lvalue_reference_t < const U >> &&
CommonReference <
std:: add_lvalue_reference_t < ranges:: common_type_t < T, U >> ,
ranges:: common_reference_t <
std:: add_lvalue_reference_t < const T > ,

std:: add_lvalue_reference_t < const U >>> ;
(ranges TS)

Das Konzept Common<T, U> spezifiziert, dass zwei Typen T und U einen gemeinsamen Typ teilen (berechnet durch ranges::common_type_t ), in den beide konvertiert werden können.

Common<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 Typ darf die Gleichheitserhaltungseigenschaft des ursprünglichen Ausdrucks nicht verändern.

Gleichheitserhaltung

Ein Ausdruck ist equality preserving , 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 Typ einer Menge von Typen
(Klassen-Template)
Bestimmt den gemeinsamen Referenztyp einer Menge von Typen
(Klassen-Template)
Spezifiziert, dass zwei Typen einen gemeinsamen Referenztyp teilen
(Konzept)