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