et indique celles qui sont à venir
La préversion Visual Studio 2017 version 15.3 est désormais disponible et s’accompagne d’une mise à jour des outils Visual C ++ (c'est-à-dire le compilateur, le linker et les bibliothèques). Comme Microsoft l’a fait pour les mises à jour VS 2015, l’entreprise a également ajouté des fonctionnalités C ++ 17 dans les mises à jour VS 2017 à une fréquence de publication similaire.
Contrairement aux mises à jour de VS 2015 (qui combinent l'IDE et les changements d'outils), l'EDI de VS 2017 est mis à jour plus fréquemment par des mises à jour mineures. Cette fois-ci, Microsoft a précisé qu’il s'agit de la première mise à jour du jeu d'outils (également appelée « mise à jour fondamentale »).
Voici une table de fonctionnalités compilées accompagnée de quelques notes. Dans cette table figurent également des fonctionnalités à venir qui seront disponibles dans la VS 2017.3 Preview 2 et sont marqués comme étant [P2].
C ++ 03/11 Caractéristiques du langage de base | Statut | Référence document | Notes |
[Tout le reste] | VS 2015 | [A] | |
Recherche de nom en deux phases | Partiel | [deuxPhases] | |
Expression SFINAE | Partiel | N2634 | [B] |
Préprocesseur C99 | Partiel | N1653 | [C] |
Types entiers étendus | N/A | N1988 | [D] |
C ++ 14 Caractéristiques du langage de base | Statut | Référence de document | Notes |
Éviter / répartir les allocations | N/A | N3664 | [E] |
Modification progressive des conversions contextuelles | VS 2013 | N3323 | |
Littéraux binaires | VS 2015 | N3472 | |
Types de retour auto et déclencheur (auto) | VS 2015 | N3638 | |
Captures initiales | VS 2015 | N3648 | |
Générique lambdas | VS 2015 | N3649 | |
Modèles variables | VS 2015.2 | N3651 | |
Extended constexpr | VS 2017 | N3652 | |
NSDMI pour agrégats | VS 2017 | N3653 | |
Attribut [[obsolète]] | VS 2015 | N3760 | |
Désaffectation dimensionnée | VS 2015 | N3778 | |
Séparateurs de chiffres | VS 2015 | N3781 | |
C ++ 17 Caractéristiques du langage de base | Statut | Référence de document | Notes |
Nouvelles règles pour auto avec les listes de démarrage | VS 2015 | N3922 | [14] |
static_assert | VS 2017 | N3928 | |
Typename dans le modèle template-parameters | VS 2015 | N4051 | [14] |
Suppression de trigraphes | VS 2010 | N4086 | [14] |
Définition de noms d'espace imbriqué | VS 2015.3 | N4230 | |
Correction des conversions de qualification | Non | N4261 | |
Attributs pour les espaces de noms et les énumérateurs | VS 2015 | N4266 | [14] |
U8 caractères littéraires | VS 2015 | N4267 | [14] |
Autoriser plus de modèles non typés | Non | N4268 | |
Fold Expressions | Non | N4295 | |
Suppression de certains plis unaires vides | Non | P0036R0 | |
Suppression du mot-clé du registre | VS 2017.3 | P0001R1 | |
Retrait de l'opérateur ++ pour bool | VS 2017.3 | P0002R1 | |
Ajout de l'option noexcept au système de type | Non | P0012R1 | |
Initialisation agrégée étendue | Non | P0017R1 | |
Capturer *this par valeur | VS 2017.3 | P0018R3 | |
__has_include | VS 2017.3 [P2] | P0061R1 | [14] |
Reformuler les constructeurs héréditaires | Non | P0136R1 | |
Liste directe des énumérations fixes à partir d'entiers | VS 2017.3 | P0138R2 | |
constexpr lambdas | VS 2017.3 | P0170R1 | |
Gamme généralisée pour les boucles | VS 2017 | P0184R0 | [14] |
[[fallthrough]] attribut | VS 2017 | P0188R1 | |
[[nodiscard]] attribut | VS 2017.3 | P0189R1 | |
[[maybe_unused]] attribut | VS 2017.3 | P0212R1 | |
littéraux Hexfloat | Non | P0245R1 | |
Utilisation des espaces de noms d'attributs sans répétition | VS 2017.3 | P0028R4 | |
Allocation de mémoire dynamique suralimentée | Non | P0035R4 | |
Déduction d'argument de modèle pour les modèles de classe | Non | P0091R3 | |
Déclaration de paramètres de modèle sans type avec auto | Non | P0127R2 | |
Elision de copie garantie | VS 2017.3 | P0135R1 | |
Ordre d'évaluation de l'expression de raffinage | Non | P0145R3 | |
Fixations structurées | VS 2017.3 | P0217R3 | |
Ignorer les attributs non reconnus | Non | P0283R2 | |
constexpr if-statements | VS 2017.3 [P2] | P0292R2 | [F] |
Déclarations de sélection avec les initialiseurs | VS 2017.3 [P2] | P0305R1 | |
Variables en ligne | Non | P0386R2 | |
Correspondance des modèles-paramètres du modèle aux arguments compatibles | Non | P0522R0 | |
Suppression des spécifications d'exception dynamiques | Non | P0003R5 | |
Expansion des paquets dans les déclarations d'utilisation | Non | P0195R2 |
[deuxPhase] Alors que la recherche de nom en deux phases n'est pas prise en charge dans la préversion VS 2017 version 15.3, l'équipe du compilateur effectue un travail majeur dans les coulisses. Pour la préversion 2, l'option / permissive-compilateur active le support partiel pour la recherche de nom en deux phases (une signification partielle d'environ 60 % complète).
[B] Bien que l'expression SFINAE soit partiellement prise en charge, elle est presque complète. Elle était suffisante pour STL dans VS 2015.2, et Expression SFINAE a reçu d'autres corrections de bogues pour des bibliothèques supplémentaires comme Boost. La déficience restante la plus importante est la nécessité d'utiliser des types d'étiquettes uniques lors de l'exécution de void_t / decltype Expression SFINAE.
[C] Le support du préprocesseur C C99 est encore partiel dans le sens où les macros variadiques fonctionnent presque.
[D] Les types entiers étendus sont autorisés, mais pas requis. Comme Clang et GCC, Microsoft a choisi de ne pas les implémenter.
[E] Les allocations d'évitement / fusion sont autorisées, mais pas requises. Ici également Microsoft a choisi de ne pas les implémenter.
[F] pris en charge sous / std: c ++ 14 avec "avertissement C4984: 'si constexpr' est une extension de langage C ++ 17". Cela permettra au STL (à l'avenir) d'utiliser "if constexpr" dans sa mise en œuvre.
[14] Ces fonctionnalités sont toujours activées, même sous / std: c ++ 14.
[P2] Ces fonctionnalités ont été enregistrées et seront disponibles dans VS 2017.3 Preview 2.