Namespaces
Variants

std:: convertible_to

From cppreference.net
Definiert im Header <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 desselben Typs und derselben Wertkategorie wie std:: declval < From > ( ) implizit und explizit in den Typ To konvertiert werden kann, und dass beide Konvertierungsformen gleiche Ergebnisse liefern.

Inhaltsverzeichnis

Semantische Anforderungen

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

  • Entweder
    • To ist weder ein Objekttyp noch ein Referenz-auf-Objekt-Typ, oder
    • static_cast < To > ( fun ( ) ) entspricht [ ] ( ) - > To { return fun ( ) ; } ( ) , und
  • Eines der folgenden ist wahr:
    • std:: add_rvalue_reference_t < From > ist kein Referenz-auf-Objekt-Typ, oder
    • std:: add_rvalue_reference_t < From > ist eine Rvalue-Referenz auf einen nicht-konst-qualifizierten Typ, und der resultierende Zustand des Objekts, auf das verwiesen wird durch fun ( ) ist gültig aber unspezifiziert nach einem der obigen Ausdrücke; oder
    • das Objekt, auf das verwiesen wird durch fun ( ) wird durch keinen der obigen Ausdrücke modifiziert.

Gleichheitserhaltung

Ausdrücke, die in requires expressions der Standardbibliothek-Konzepte deklariert sind, müssen equality-preserving sein (sofern nicht anders angegeben).

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]

Siehe auch

prüft, ob ein Typ in den anderen Typ konvertiert werden kann
(Klassen-Template)