Namensräume
Varianten
Aktionen

std::experimental::ranges::Common

Von cppreference.com
< cpp‎ | experimental‎ | ranges
 
 
 
 
Konzeptbibliothek
Kernsprachen-Konzepte
Common
                              
Objektkonzepte
                              
                              
Vergleichskonzepte
Aufrufbare Konzepte
                                        
                              
URNG-Konzept
 
Definiert in Header <experimental/ranges/concepts>
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> gibt an, dass zwei Typen T und U einen gemeinsamen Typ (wie von ranges::common_type_t berechnet) haben, in den beide konvertiert werden können.

Common<T, U> ist nur dann erfüllt, wenn für Ausdrücke t und u, so dass decltype((t)) T und decltype((u)) U ist,

Anders ausgedrückt muss die Konvertierung in den gemeinsamen Typ 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 Typ einer Menge von Typen
(class template) [bearbeiten]
ermittelt den gemeinsamen Referenztyp einer Menge von Typen
(class template) [bearbeiten]
gibt an, dass zwei Typen einen gemeinsamen Referenztyp haben
(concept) [bearbeiten]