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 | ![]() |