IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

Microsoft propose une compilation des fonctionnalités de C++ 17 dans la préversion Visual C++ 2017 version 15.3
Et indique celles qui sont à venir

Le , par Stéphane le calme

369PARTAGES

9  0 

Microsoft propose une compilation des fonctionnalités de C++ 17 dans la préversion Visual C++ 2017 version 15.3,
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 .


C ++ 03/11 Caractéristiques du langage de base
Statut
Référence document
Notes


[Tout le reste]
VS 2015




Recherche de nom en deux phases
Partiel




Expression SFINAE
Partiel
N2634



Préprocesseur C99
Partiel
N1653



Types entiers étendus
N/A
N1988



C ++ 14 Caractéristiques du langage de base

Statut
Référence de document
Notes


Éviter / répartir les allocations
N/A
N3664



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



static_assert
VS 2017
N3928



Typename dans le modèle template-parameters
VS 2015
N4051



Suppression de trigraphes
VS 2010
N4086



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



U8 caractères littéraires
VS 2015
N4267



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
P0061R1



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



[] attribut
VS 2017
P0188R1



[] attribut
VS 2017.3
P0189R1



[] 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
P0292R2



Déclarations de sélection avec les initialiseurs
VS 2017.3
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




À l'exception des spécifications d'exception dynamiques, qui ont été obsolètes dans C ++ 11 et principalement supprimées dans C ++ 17. Notez que C ++ 17 18.4 [except.spec] / 2 indique "The noexcept-specifier throw () est obsolète (D.3) et équivalent à noexcept noexcept (true)." Mais VS 2017 version 15.3 preview Considère actuellement throw () comme équivalent à __declspec (nothrow).

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).

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.

Le support du préprocesseur C C99 est encore partiel dans le sens où les macros variadiques fonctionnent presque.

Les types entiers étendus sont autorisés, mais pas requis. Comme Clang et GCC, Microsoft a choisi de ne pas les implémenter.

Les allocations d'évitement / fusion sont autorisées, mais pas requises. Ici également Microsoft a choisi de ne pas les implémenter.

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.

Ces fonctionnalités sont toujours activées, même sous / std: c ++ 14.

Ces fonctionnalités ont été enregistrées et seront disponibles dans VS 2017.3 Preview 2.

Vous avez lu gratuitement 3 380 articles depuis plus d'un an.
Soutenez le club developpez.com en souscrivant un abonnement pour que nous puissions continuer à vous proposer des publications.

Une erreur dans cette actualité ? Signalez-nous-la !