Les fonctionnalités intégrées au C++17 ont été décidées au cours de la réunion d'Oulu
Découvrez ce que sera le nouveau standard

Le , par LittleWhite, Responsable 2D/3D/Jeux
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 :


Du côté des fonctionnalités la bibliothèque standard, les quatre points suivants ont été acceptés :


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


Vous avez aimé cette actualité ? Alors partagez-la avec vos amis en cliquant sur les boutons ci-dessous :


 Poster une réponse

Avatar de bazzyx bazzyx - Nouveau Candidat au Club https://www.developpez.com
le 28/06/2016 à 0:05
Bonsoir c koi ca! j'avais decidé d'apprendre ce langage plutot que python.ca devient une horreur inutilisable.le developpement comme l'entretient deviennent quasi impossible seul.c'est 1 risque d'érreurs

majeur.les compilateurs et edi seront difficiles a mettre au point.cela va mettre en cause la portabilité des programmes. leurs financement aussi. on risque 1 fork à partir de c11. ils ont pondu 1 truc

indigeste, incomprehensible par la majorité des developpeurs. je mise sur python java modernisé et c sharp. merci ! je cours vite me laver les yeux de c17.
Avatar de Mingolito Mingolito - Membre chevronné https://www.developpez.com
le 28/06/2016 à 1:59
En même temps C++ à mon avis c'est pas destiné aux débutants et aux amateurs. Pour les amateurs débutants dans ton genre le Python c'est beaucoup plus simple en effet.
Avatar de therev123 therev123 - Membre à l'essai https://www.developpez.com
le 28/06/2016 à 4:59
Moi qui voulais me remettre à programmer en C++, ayant appris avec les bon vieux standard comme les type float int double et les bonne vieille méthode de POO et de pointeur. J'ai voulu passer au C++ 11 et bien franchement je trouve que c'est de la vrai merde, tout est ambigue, les putins de mots clé comme auto, shared_ptr tout plein de mots clé barbare, pas moyen d'apprendre, de comprendre et d'exploiter c'est nouveau concepts à partir des bonnes vieilles bases du langage. Moi je suis tout perdu, je re-mets énormement en question mes connaissances sur le c++, bien franchement j'ai pas suivi son développement et je me suis encore moins préparé à l'arriver de ces nouvelles normes, si je m'avais pencher sur la bibliothèque boost j'en serais peut-etre pas rendu là, j'aurais été mieux préparé, mais bon il n'est jamais trop tard.
Avatar de grunk grunk - Modérateur https://www.developpez.com
le 28/06/2016 à 8:45
Les types de base , les (raw) pointer sont toujours là , que ce soit C++11 ou 17.
L'évolution apporte juste des simplifications qui au contraire évite les erreur très commune du C++.

Tu peux très bien faire un soft complet en c++11 sans utiliser auto si ca te convient pas.
De la même manière tu peux très bien choisir de faire des new/delete plutôt qu'un simple shared_ptr , faut juste pas oublier de désallouer
Avatar de Luc Hermitte Luc Hermitte - Expert éminent https://www.developpez.com
le 28/06/2016 à 9:19
Citation Envoyé par grunk Voir le message
De la même manière tu peux très bien choisir de faire des new/delete plutôt qu'un simple shared_ptr , faut juste pas oublier de désallouer
Au détail que c'est impossible (la faute aux exceptions) de garantir un libération de la mémoire sans encapsuler les ressources dans des capsules RAII. Et ça, depuis 98 (*), le seul truc qui change c'est que l'on n'a plus besoin d'une bibliothèque externe pour disposer d'un tel service.

De la lecture nécessaire pour une mise à jour rapide du truc le plus important par rapport à la pratique du C with classes: http://alexandre-laurent.developpez....ou-exceptions/

(*) enfin, on avait bien auto_ptr, et ses soucis comme vector<auto_ptr<>> qui ne marchait pas.
Avatar de mintho carmo mintho carmo - Membre averti https://www.developpez.com
le 28/06/2016 à 9:36
Citation Envoyé par therev123 Voir le message
des bonnes vieilles bases du langage
Justement, elles sont vieilles. Pourquoi continuer à utiliser des syntaxes complexes et potentiellement dangereuses (cf le message de Luc), s'il est possible de faire la même chose plus simplement et safe.

Les contraintes en termes de conception de logiciels ont évoluées, et les méthodologies de développement ont suivi. Soit il fallait changer de langage pour suivre ces nouveaux besoins, soit il fallait faire évoluer le C++. L'intérêt du C++ n'est pas de proposer une syntaxe vieille de 20 ans, mais de proposer les mêmes avantages qu'il y a 20 ans avec une syntaxe moderne. (Plus ou moins correctement, selon les compétences plus ou moins à jour des devs).

Et on est en 2016. Plus de 5 ans que le C++11 est normalisé. Cela fait un peu long pour se mettre à jour. Vous mettez plus de 5 ans pour apprendre un langage ?
Avatar de ParseCoder ParseCoder - Membre habitué https://www.developpez.com
le 28/06/2016 à 10:00
Je ne comprend pas les commentaires précédents. Le C++ moderne a gagné en cohérence et en performance. Il y a des choses intéressantes aussi dans le C# par exemple, mais pour obtenir des perfs correctes on peut être amené à faire des bidouilles assez moches. Donc merci mais je reste en C++.
Avatar de VivienD VivienD - Membre éclairé https://www.developpez.com
le 28/06/2016 à 10:39
Si certaines évolutions sont louables comme la déduction des arguments templates pour les classes templates et constexpr if, d'autres me laissent dubitatifs. Par exemple, la levée de l'ambiguïté de f(i++, i); n'est, à mon sens, pas nécessaire: il suffisait d'écrire f(i, i); i++; ou f(i, i + 1); i++;, ce qui est nettement plus clair.

Citation Envoyé par grunk Voir le message
Les types de base , les (raw) pointer sont toujours là , que ce soit C++11 ou 17.
L'évolution apporte juste des simplifications qui au contraire évite les erreur très commune du C++.

Tu peux très bien faire un soft complet en c++11 sans utiliser auto si ca te convient pas.
De la même manière tu peux très bien choisir de faire des new/delete plutôt qu'un simple shared_ptr , faut juste pas oublier de désallouer
Enfin quelqu'un qui comprend à la rejet du mot-clef auto et ma préférence pour l'utilisation des pointeurs nus par rapport à celles des pointeurs intelligents.
Avatar de nikko34 nikko34 - Membre éprouvé https://www.developpez.com
le 28/06/2016 à 10:55
A noter que le code métier n'a pas à utiliser tous les systèmes plus complexes du C++.

Le but c'est de faire des librairies complexes avec beaucoup de possibilités mais qui rendent le code métier simple.

Franchement pour ceux qui utilisaient boost/le c++ moderne, il n'y a pas de gros changement avec C++11.

Pourquoi utiliser des pointeurs nus quand on sait qu'ils ne sont pas safe et que c'est si simple avec les pointeurs intélligents? (et bien sûr le fait qu'on doit utiliser les pointeurs en C++ que quand on en a vraiment besoin).
Avatar de foetus foetus - Expert confirmé https://www.developpez.com
le 28/06/2016 à 10:59
Citation Envoyé par mintho carmo Voir le message
Et on est en 2016. Plus de 5 ans que le C++11 est normalisé. Cela fait un peu long pour se mettre à jour. Vous mettez plus de 5 ans pour apprendre un langage ?
Tu parles de langage. Hors, le C++1y est une surcouche/ amélioration/ [armure] du C++. Donc apprendre un langage, comme tu y vas

De plus, vu comment le C++14 et le C++17 améliore/ déprécie/ change le C++11, je me dis que ceux qui ont appris le C++11 n'ont pas loupé le train, mais changent tous les 2 ans leurs acquis

À près on va, à coup sûr, me dire: les changements sont minimes, les changements ont été anticipés avec des bidouilles, les changements ne touchent qu'à la partie "faire une bibliothèque", les changements sont du sucre syntaxique ...
Offres d'emploi IT
Ingénieur d'études JAVA / J2EE - H/F
Solutec Paris - Ile de France - Ile de France (75000)
Development of a tool H/F en stage
Worldline - Centre - Blois (41000)
Data Engineer - Concepteur Développeur Big Data(H/F)
NATIXIS - Ile de France - Charenton le Pont (94220)

Voir plus d'offres Voir la carte des offres IT
Contacter le responsable de la rubrique C++