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 [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
[A] � 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).
[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.
Partager