Statut de conformité des fonctionnalités du langage C++ moderne
Remonter à C++ moderne
Voici ci-dessous la liste des fonctionnalités du C++ moderne qui sont prises en charge par les compilateurs C++ de RAD Studio.
Fonctionnalités C++11
Fonctionnalité | Document de proposition C++11 |
BCC32C/X | BCC32 | BCC64 | BCCOSX | BCCIOSARM | BCCIOSARM64 | BCCAARM |
---|---|---|---|---|---|---|---|---|
Références rvalue | N2118 | |||||||
Références rvalue pour *this
|
N2439 | |||||||
Initialisation des objets de classe par rvalues | N1610 | |||||||
Initialiseurs de membres de données non statiques | N2756 | |||||||
Templates variadic | N2242 | |||||||
Extension des paramètres template de modèle variadic | N2555 | |||||||
Liste d'initialiseurs | N2672 | |||||||
Assertions statiques | N1720 | |||||||
Variables auto -typées
|
N1984 | |||||||
Multi-déclarateur auto
|
N1737 | |||||||
Suppression de auto comme spécificateur de classe de stockage | N2546 | |||||||
Nouvelle syntaxe de déclarateur de fonction | N2541 | |||||||
Expressions lambda | N2927 | |||||||
Type déclaré d'une expression | N2343 | |||||||
Types de retour incomplets | N3276 | |||||||
Crochets droits | N1757 | |||||||
Arguments de template par défaut pour les templates de fonctions | DR226 | |||||||
Résolution du problème SFINAE pour les expressions | DR339 | |||||||
Templates d'alias | N2258 | |||||||
Templates extern | N1987 | |||||||
Constante pointeur null | N2431 | |||||||
Enumérations fortement typées | N2347 | |||||||
Déclaration forward des énumérations | N2764 DR1206 |
|||||||
Syntaxe des attributs standardisés | N2761 | |||||||
Expressions constantes généralisées | N2235 | |||||||
Support de l'alignement | N2341 | |||||||
Comportement support conditionnel | N1627 | |||||||
Changement du comportement non défini en erreurs diagnosticables | N1727 | |||||||
Délégation de constructeurs | N1986 | |||||||
Constructeurs d'héritage | N2540 | |||||||
Opérateurs de conversion explicite | N2437 | |||||||
Nouveaux types de caractères | N2249 | |||||||
Littéraux chaîne Unicode | N2442 | |||||||
Littéraux chaîne brute | N2442 | |||||||
Noms de caractères universels dans les littéraux | N2170 | |||||||
Littéraux définis par l'utilisateur | N2765 | |||||||
Types de disposition standard | N2342 | |||||||
Fonctions par défaut | N2346 | |||||||
Fonctions supprimées | N2346 | |||||||
Déclarations friend étendues | N1791 | |||||||
Extension de sizeof
|
N2253 DR850 |
|||||||
Espaces de nommage inline | N2535 | |||||||
Unions non restreintes | N2544 | |||||||
Types locaux et non nommés comme arguments de template | N2657 | |||||||
Boucle for basée sur l'étendue | N2930 | |||||||
Redéfinitions explicites de virtual | N2928 N3206 N3272 |
|||||||
Support minimal du nettoyage de la mémoire et de la détection de perte basée sur l'accessibilité | N2670 | |||||||
Autoriser les constructeurs de déplacement à déclencher une exception [noexcept] | N3050 | |||||||
Définition de fonctions membre spéciales de déplacement | N3053 | |||||||
Accès concurrent | ||||||||
Points de séquence | N2239 | |||||||
Opérations atomiques | N2427 | |||||||
Opération comparer-échanger forte | N2748 | |||||||
Délimitations bidirectionnelles | N2752 | |||||||
Modèle de mémoire | N2429 | |||||||
Ordre dépendant des données : opérations atomiques et modèle de mémoire | N2664 | |||||||
Propagation des exceptions | N2179 | |||||||
Autoriser l'usage des opérations atomiques dans les gestionnaires de signaux | N2547 | |||||||
Stockage local des threads | N2659 | |||||||
Initialisation dynamique et destruction avec accès concurrent | N2660 | |||||||
Fonctionnalités C99 dans C++11 | ||||||||
Identificateur prédéfini __func__
|
N2340 | |||||||
Préprocesseur C99 | N1653 | |||||||
Type long long
|
N1811 | |||||||
Types intégraux étendus | N1988 |
Fonctionnalités C++14
Fonctionnalité | Document de proposition C++14 | BCC32C/X |
---|---|---|
Formulation ajustée pour les conversions textuelles | N3323 | |
Littéraux binaires | N3472 | |
decltype(auto), déduction du type de retour pour les fonctions normales | N3638 | |
Captures lamba initilisées/généralisées (init-capture) | N3648 | |
Expressions lambda (polymorphiques) génériques | N3649 | |
Templates de variables | N3651 | |
Constexpr étendu | N3652 | |
Initialiseurs de membres et agrégats (NSDMI) | N3653 | |
Clarification de l'allocation mémoire (en évitant/fusionnant les allocations) | N3664 | |
Attribut [[deprecated]] | N3760 | |
Désallocation dimensionnée | N3768 | |
Guillemet simple utilisé comme séparateur numérique | N3781 | |
std::result_of et SFINAE | N3462 | |
constexpr pour <complex> | N3302 | |
constexpr pour <chrono> | N3469 | |
constexpr pour <array> | N3470 | |
constexpr pour <initializer_list>, <utility> et <tuple> | N3471 | |
Amélioration de std::integral_constant | N3545 | |
Littéraux définis par l'utilisateur pour <chrono> et <string> | N3642 | |
Itérateurs forward null | N3644 | |
std::quoted | N3654 | |
Recherche associative hétérogène | N3657 | |
std::integer_sequence | N3658 | |
std::shared_timed_mutex | N3659 | |
std::exchange | N3668 | |
Résolution des fonctions membre constexpr sans const | N3669 | |
std::get<T>() | N3670 | |
std::equal, std::is_permutation, std::mismatch à double plage | N3671 |
Fonctionnalités C++17
Fonctionnalité | Document de proposition C++17 | BCC32C/X |
---|---|---|
Nouvelles règles relatives à auto pour direct-list-initialization | N3922 | |
static_assert sans message | N3928 | |
typename dans un paramètre template template | N4051 | |
Suppression des trigraphes | N4086 | |
Définition d'espaces de nommage imbriqués | N4230 | |
Attributs pour espaces de nommages et énumérateurs | N4266 | |
Littéraux caractères u8 | N4267 | |
Autoriser l'évaluation de constante pour tous les arguments template sans type | N4268 | |
Expressions fold | N4295 | |
Suppression du mot clé register devenu obsolète | P0001R1 | |
Suppression de l'opérateur ++(bool) obsolète | P0002R1 | |
Suppression de spécifications d'exceptions obsolètes dans C++17 | P0003R5 | |
Inclure les spécifications d'exception dans le système de type | P0012R1 | |
Initialisation des agrégats de classes avec les classes de base | P0017R1 | |
Capture lambda de *this | P0018R3 | |
Utilisation des espaces de nommage des attributs sans répétition | P0028R4 | |
Allocation mémoire dynamique pour des données sur-alignées | P0035R4 | |
Expressions fold unaires et packs de paramètres vides | P0036R0 | |
__has_include dans les conditions du préprocesseur | P0061R1 | |
Déduction d'arguments de template pour les templates de classes | P0091R3 | |
Paramètres de template sans type avec le type auto | P0127R2 | |
Elision de copie garantie | P0135R1 | |
Nouvelle spécification pour l'héritage des constructeurs (DR1941 et al) | P0136R1 | |
Remplacement des objets de classe contenant des membres de référence | P0137R1 | |
Direct-list-initialization des énumérations | P0138R2 | |
Ordre d'évaluation des expressions plus strict | P0145R3 | |
Expressions lambda constexpr | P0170R1 | |
Types begin et end différents dans les boucles for basées sur un intervalle | P0184R0 | |
Attribut [[fallthrough]] | P0188R1 | |
Attribut [[nodiscard]] | P0189R1 | |
Extensions de packs dans les déclarations using | P0195R2 | |
Attribut [[maybe_unused]] | P0212R1 | |
Liaisons structurées | P0217R3 | |
Littéraux hexadécimaux à virgule flottante | P0245R1 | |
Ignorer les attributs inconnus | P0283R2 | |
Instructions if constexpr | P0292R2 | |
Instructions init pour if et switch | P0305R1 | |
Variables inline | P0386R2 | |
DR : La mise en correspondance d'arguments template template exclut les templates compatibles | P0522R0 | |
std::uncaught_exceptions() | N4259 | |
Amélioration de std::pair et std::tuple | N4387 | |
std::any | P0220R1 | |
std::variant | P0088R3 | |
std::optional | P0220R1 | |
std::shared_mutex (untimed) | N4508 | |
std::string_view | N3921 | |
Standardisation du parallélisme TS | P0024R2 | |
Conversions de chaînes élémentaires | P0067R5 | |
Fonctions mathématiques spéciales | P0226R1 | |
Transferts d'ensembles et de cartes | P0083R3 | |
Taille d'interférence matérielle | P0154R1 | |
std::filesystem | P0218R1 | |
std::byte | P0298R3 |