Namensräume
Varianten
Aktionen

std::convertible_to

Von cppreference.com
< cpp‎ | concepts
 
 
 
Definiert in der Header-Datei <concepts>
template< class From, class To >

concept convertible_to =
    std::is_convertible_v<From, To> &&
    requires {
        static_cast<To>(std::declval<From>());

    };
(seit C++20)

Das Konzept convertible_to<From, To> spezifiziert, dass ein Ausdruck vom gleichen Typ und mit der gleichen Wertkategorie wie die von std::declval<From>() implizit und explizit in den Typ To konvertiert werden kann und dass die beiden Konvertierungsformen gleiche Ergebnisse liefern.

Inhalt

[bearbeiten] Semantische Anforderungen

convertible_to<From, To> wird nur dann modelliert, wenn für eine Funktion fun vom Typ std::add_rvalue_reference_t<From>(), für die der Ausdruck fun() gleichheitserhaltend ist,

  • entweder
    • To weder ein Objekttyp noch ein Referenztyp auf ein Objekt ist, oder
    • static_cast<To>(fun()) ist gleich []() -> To { return fun(); }(), und
  • eines der folgenden gilt:
    • std::add_rvalue_reference_t<From> ist kein Referenztyp auf ein Objekt, oder
    • std::add_rvalue_reference_t<From> ist eine Rvalue-Referenz auf einen nicht-const-qualifizierten Typ und der resultierende Zustand des Objekts, auf das von fun() verwiesen wird, ist nach jedem der obigen Ausdrücke gültig, aber nicht spezifiziert; oder
    • das Objekt, auf das von fun() verwiesen wird, wird durch keinen der obigen Ausdrücke modifiziert.

[bearbeiten] Gleichheitserhaltung

Ausdrücke, die in requires-Ausdrücken der Standardbibliothekskonzepte deklariert sind, müssen gleichheitserhaltend sein (sofern nicht anders angegeben).

[bearbeiten] Referenzen

  • C++23 Standard (ISO/IEC 14882:2024)
  • 18.4.4 Konzept convertible_to [concept.convertible]
  • C++20 Standard (ISO/IEC 14882:2020)
  • 18.4.4 Konzept convertible_to [concept.convertible]

[bearbeiten] Siehe auch

prüft, ob ein Typ in den anderen Typ konvertierbar ist
(Klassenvorlage) [bearbeiten]