Konformitätsstatus moderner C++-Sprach-Features
Nach oben zu Modernes C++
Inhaltsverzeichnis
Im folgenden finden Sie die modernen C++-Features, die von den RAD Studio-Compilern für C++ unterstützt werden.
C++17-Features
Feature | C++17-Vorschlagsdokument | BCC32C/X | BCC64 |
---|---|---|---|
Neue auto-Regeln für direct-list-initialization | N3922 | ||
static_assert ohne Meldung | N3928 | ||
typename in einem template-Template-Parameter | N4051 | ||
Entfernen von Trigraphs | N4086 | ||
Verschachtelte Namespace-Definition | N4230 | ||
Attribute für Namespaces und Aufzählungen | N4266 | ||
u8-Zeichenliterale | N4267 | ||
Konstantenauswertung für alle Argumente ohne Typ zulassen | N4268 | ||
Fold-Ausdrücke | N4295 | ||
Veraltete Verwendung des Schlüsselworts register entfernen | P0001R1 | ||
Veraltetes operator++(bool) entfernen | P0002R1 | ||
Entfernen veralteter Exception-Spezifikationen aus C++17 | P0003R5 | ||
Exception-Spezifikationen in das Typsystem aufnehmen | P0012R1 | ||
Aggregatinitialisierung von Klassen mit Basisklassen | P0017R1 | ||
Lambda-Erfassung von *this | P0018R3 | ||
Verwenden von Attribut-Namespaces ohne Wiederholung | P0028R4 | ||
Dynamische Speicherzuweisung für über-ausgerichtete Daten | P0035R4 | ||
Unäre fold-Ausrücke und leere Parameterpakete | P0036R0 | ||
__has_include in Präprozessorbedingungen | P0061R1 | ||
Template-Argumentableitung für Klassen-Templates | P0091R3 | ||
Template-Parameter ohne Typ mit dem Typ "auto" | P0127R2 | ||
Garantierte Kopierauslassung | P0135R1 | ||
Neue Spezifikation für die Vererbung von Konstruktoren (DR1941 et al) | P0136R1 | ||
Ersatz von Klassenobjekten, die Referenz-Member enthalten | P0137R1 | ||
Direct-list-initialization von Aufzählungen | P0138R2 | ||
Striktere Reihenfolge bei Ausdrucksauswertungen | P0145R3 | ||
constexpr lambda-Ausdrücke | P0170R1 | ||
Abweichende begin- und end-Typen im bereichsbasierten for | P0184R0 | ||
Attribut [[fallthrough]] | P0188R1 | ||
Attribut [[nodiscard]] | P0189R1 | ||
Paketerweiterungen in using-Deklarationen | P0195R2 | ||
Attribut [[maybe_unused]] | P0212R1 | ||
Strukturierte Bindungen | P0217R3 | ||
Hexadezimale Gleitkommaliterale | P0245R1 | ||
Unbekannte Attribute ignorieren | P0283R2 | ||
constexpr if-Anweisungen | P0292R2 | ||
init-Anweisungen für if und switch | P0305R1 | ||
Inline-Variablen | P0386R2 | ||
DR: Abgleich von template-Template-Argumenten schließen kompatible Templates aus | P0522R0 | ||
std::uncaught_exceptions() | N4259 | ||
Verbessertes std::pair und std::tuple | N4387 | ||
std::any | P0220R1 | ||
std::variant | P0088R3 | ||
std::optional | P0220R1 | ||
std::shared_mutex (untimed) | N4508 | ||
std::string_view | N3921 | ||
Standardisierung des Parallelismus TS | P0024R2 | ||
Elementare String-Konvertierungen | P0067R5 | ||
Mathematische Sonderfunktionen | P0226R1 | ||
Verbinden von Karten und Sets | P0083R3 | ||
Hardware-Interferenzgröße | P0154R1 | ||
std::filesystem | P0218R1 | ||
std::byte | P0298R3 |
C++14-Features
Feature | C++14-Vorschlagsdokument | BCC32C/X | BCC64 |
---|---|---|---|
Optimierte Formulierungen für kontextabhängige Konvertierungen | N3323 | ||
Binäre Literale | N3472 | ||
decltype(auto), Rückgabetypableitung für normale Funktionen | N3638 | ||
Initialisierte/Generalisierte Lambda-Erfassung (init-capture) | N3648 | ||
Generische (polymorphe) Lambda-Ausdrücke | N3649 | ||
Variablen-Templates | N3651 | ||
Erweitertes constexpr | N3652 | ||
Member-Initialisierer und Aggregate (NSDMI) | N3653 | ||
Klären der Speicherzuordnung (Zuweisungen verhindern/zusammenführen) | N3664 | ||
Attribut [[deprecated]] | N3760 | ||
Größenabhängige Freigabe | N3768 | ||
Einfaches Anführungszeichen als Zifferntrenner | N3781 | ||
std::result_of und SFINAE | N3462 | ||
constexpr für <complex> | N3302 | ||
constexpr für <chrono> | N3469 | ||
constexpr für <array> | N3470 | ||
constexpr für <initializer_list>, <utility> und <tuple> | N3471 | ||
Verbessertes std::integral_constant | N3545 | ||
Benutzerdefinierte Literale für <chrono> und <string> | N3642 | ||
Null-Forward-Iteratoren | N3644 | ||
std::quoted | N3654 | ||
Heterogene assoziative Suche | N3657 | ||
std::integer_sequence | N3658 | ||
std::shared_timed_mutex | N3659 | ||
std::exchange | N3668 | ||
Festlegen der constexpr-Member-Funktionen ohne const | N3669 | ||
std::get<T>() | N3670 | ||
std::equal, std::is_permutation, std::mismatch im Dualbereich | N3671 |
C++11-Features
Feature | C++11-Vorschlags- dokument |
BCC32C/X | BCC32 | BCC64 | BCCOSX | BCCIOSARM | BCCIOSARM64 | BCCAARM |
---|---|---|---|---|---|---|---|---|
R-Wert-Referenzen | N2118 | |||||||
R-Wert-Referenzen für *this
|
N2439 | |||||||
Initialisierung von Klassenobjekten durch R-Werte | N1610 | |||||||
Initialisierung von nicht-statischen Daten-Membern | N2756 | |||||||
Variadische Templates | N2242 | |||||||
Erweitern von Template-Parametern variadischer Templates | N2555 | |||||||
Initialisierungslisten | N2672 | |||||||
Statische Assertions | N1720 | |||||||
auto -typisierte Variablen
|
N1984 | |||||||
Multi-Deklarator auto
|
N1737 | |||||||
Entfernen von "auto" als Speicherklassenspezifizierer | N2546 | |||||||
Neue Funktionsdeklaratorsyntax |
N2541 | |||||||
Lambda-Ausdrücke | N2927 | |||||||
Deklarierter Typ eines Ausdrucks | N2343 | |||||||
Unvollständige Rückgabetypen | N3276 | |||||||
Rechte spitze Klammern | N1757 | |||||||
Template-Standardargumente für Funktions-Templates | DR226 | |||||||
Beheben des SFINAE-Problems bei Ausdrücken | DR339 | |||||||
Alias-Templates | N2258 | |||||||
Externe Templates | N1987 | |||||||
Nullzeigerkonstante | N2431 | |||||||
Streng typisierte Aufzählungen | N2347 | |||||||
Forward-Deklarationen von Enums | N2764 DR1206 |
|||||||
Standardisierte Attributsyntax | N2761 | |||||||
Generalisierte konstante Ausdrücke | N2235 | |||||||
Ausrichtungsunterstützung | N2341 | |||||||
Bedingtes Unterstützungsverhalten | N1627 | |||||||
Ändern undefinierten Verhaltens in diagnostizierbare Fehler | N1727 | |||||||
Delegierende Konstruktoren | N1986 | |||||||
Vererbung von Konstruktoren | N2540 | |||||||
Explizite Konvertierungsoperatoren | N2437 | |||||||
Neue Zeichentypen | N2249 | |||||||
Unicode-String-Literale | N2442 | |||||||
Roh-String-Literale | N2442 | |||||||
Universelle Zeichennamen in Literalen | N2170 | |||||||
Benutzerdefinierte Literale | N2765 | |||||||
Standard-Layout-Typen | N2342 | |||||||
Standardmäßig zu verwendende Funktionen | N2346 | |||||||
Gelöschte Funktionen | N2346 | |||||||
Erweiterte friend-Deklarationen | N1791 | |||||||
Erweiterung von sizeof
|
N2253 DR850 |
|||||||
Inline-Namespaces | N2535 | |||||||
Uneingeschränkte Varianten | N2544 | |||||||
Lokale und unbenannte Typen als Template-Argumente | N2657 | |||||||
Bereichsbasiertes for | N2930 | |||||||
Explizite virtuelle Überschreibungen | N2928 N3206 N3272 |
|||||||
Minimale Unterstützung für Speicherbereinigung und erreichbarkeitsbasierte Leckerkennung | N2670 | |||||||
Auslösen von [noexcept] durch Verschiebekonstruktoren | N3050 | |||||||
Definieren spezieller Member-Funktionen für das Verschieben | N3053 | |||||||
Nebenläufigkeit | ||||||||
Sequenzpunkte | N2239 | |||||||
"Atomic"-Operationen | N2427 | |||||||
Starker Vergleich und Austausch | N2748 | |||||||
Bidirektionale Fences | N2752 | |||||||
Speichermodell | N2429 | |||||||
Datenabhängige Sortierung: "Atomics" und Speichermodell | N2664 | |||||||
Weitergeben von Exceptions | N2179 | |||||||
Zulassen von "Atomics" in Signalbehandlungsroutinen | N2547 | |||||||
Thread-lokaler Speicher | N2659 | |||||||
Dynamische Initialisierung und Freigabe bei Nebenläufigkeit | N2660 | |||||||
C99-Features in C++11 | ||||||||
Vordefinierter Bezeichner __func__
|
N2340 | |||||||
C99-Präprozessor | N1653 | |||||||
Typ long long
|
N1811 | |||||||
Erweiterte integrale Typen | N1988 |