std::experimental::ranges:: CommonReference
|
Definiert im Header
<experimental/ranges/concepts>
|
||
|
template
<
class
T,
class
U
>
concept
bool
CommonReference
=
|
(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,
-
ranges::
common_reference_t
<
T, U
>
(
t
)
ist gleich
ranges::
common_reference_t
<
T, U
>
(
t
)
genau dann, wenn
tein gleichheitserhaltender Ausdruck ist; und -
ranges::
common_reference_t
<
T, U
>
(
u
)
ist gleich
ranges::
common_reference_t
<
T, U
>
(
u
)
genau dann, wenn
uein gleichheitserhaltender Ausdruck 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) |