Les fonctionnalit�s int�gr�es au C++17 ont �t� d�cid�es au cours du meeting � Oulu
Le comit� autour du C++ s'est une nouvelle fois r�uni afin de d�cider du contenu de la nouvelle version du langage de programmation C++.
Le comit� a conclu une entente et la liste des fonctionnalit�s ne changera plus. Voici la liste des fonctionnalit�s qui int�greront C++17 :
- allocation dynamique de m�moire pour les donn�es sur align�es : en effet, depuis C++11, vous pouviez sp�cifier l'alignement d'une structure avec alignas(). Toutefois, lors d'une allocation dynamique, il fallait vous-m�me g�rer la taille de la m�moire align�e tout en prenant en compte, manuellement, l'alignement ;
- d�duction des arguments de template pour les classes templates ;
- mot cl� auto pour les templates : permet de d�finir le type utilis� dans un template au moment de l'instanciation du template ;
- garantie sur l'omission de la copie : notamment pour permettre � une fonction de renvoyer un objet impossible � d�placer (et aussi, de ne pas avoir � toujours d�finir le constructeur de copie et de d�placement lorsqu'ils ne sont pas du tout utilis�s) ;
- une version affaiblie de l'ordre d'�valuation fixe pour les expressions : pour enlever toute ambigu�t� sur un code tel que f(i++,i) ;
- contexpr if : condition trait�e lors de la compilation ;
- garantie forward progress : am�lioration de la formulation du standard ;
- variables inline ;
- liaisons structur�es ;
- if et switch (regroupement de l'initiation et de la condition) : nouvelle syntaxe pour le mot cl� if, permettant d'�crire if (status_code err = fct(); err != SUCCESS).
Du c�t� des fonctionnalit�s la biblioth�que standard, les quatre points suivants ont �t� accept�s :
- le C++17 repose sur C11 et non pas C98 ;
- variant<> : union avec protection du type ;
- destroy(_at|_n), uninitialized_move(_n), uninitialized_value_construct(_n), uninitialized_default_construct(_n) ;
- d�placement d'�l�ments pour map<>,unordered_map<>, set<>, and unordered_set<> ;
- r�servation de std[0-9]+ pour les standards futurs.
Pour rappel, il y a trois mois (lors de la r�union pr�c�dente), le comit� s'�tait accord� pour int�grer les fonctionnalit�s suivantes :
- attributs [[fallthrough]], [[nodiscard]], [[maybe_unused]] ;
- constexpr lambdas ;
- g�n�ralisation des boucles sur ensemble ;
- capture de *this dans les lambdas ;
- valeurs litt�rales hexad�cimales pour les nombres � virgules flottantes ;
Et pour la biblioth�que standard :
- (parts of) Library Fundamentals TS v1 ;
- Parallelism TS v1 ;
- File System TS v1 ;
- fonctions math�matiques sp�ciales ;
- hardware_*_interference_size ;
- .is_always_lockfree() ;
- clamp() ;
- non-const .data() pour les cha�nes de caract�res.
Comme nous l'avions vu, les concepts ne feront pas partie du C++17. Vous pouvez voir la liste compl�te des fonctionnalit�s ici.
�videmment, une nouvelle version du langage n'est rien si les compilateurs ne la supportent pas. On pourra donc se renseigner sur le progr�s du support pour clang ici et pour libc++ ici.
Votre opinion
Avez-vous suivi les �volutions du C++17 ? Qu'est-ce qui vous int�resse le plus dans les nouvelles fonctionnalit�s ?
Envisagez-vous de l'int�grer dans vos projets au plus t�t ? Comment g�rez-vous une transition ?
Source
Page IsoCPP sur les fonctionnalit�s du langage
Partager