std::experimental::ranges::CommonReference
| Definiert in Header <experimental/ranges/concepts> |
||
| template< class T, class U > concept bool CommonReference = |
(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,
- ranges::common_reference_t<T, U>(t) gleich ranges::common_reference_t<T, U>(t) ist, wenn und nur wenn
tein gleichheitserhaltender Ausdruck ist; und - ranges::common_reference_t<T, U>(u) gleich ranges::common_reference_t<T, U>(u) ist, wenn und nur wenn
uein gleichheitserhaltender Ausdruck 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) | |
| gibt an, dass zwei Typen einen gemeinsamen Typ haben (concept) | |
| ermittelt den gemeinsamen Typ einer Menge von Typen (class template) |