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 |