Le C++ a bientôt la quarantaine et pourtant très actif en ce moment avec la finalisation de la prochaine version C++17. Profitons‐en pour faire le point avec une série d’articles sur le C++. Cette première dépêche nous dévoile la face cachée du C++, et donc peut intéresser tous les lecteurs LinuxFr.org. :-)
C++17, Genèse d’une version mineure
La série de dépêches C++ continue. Cette seconde dépêche nous amène dans les réunions du comité de standardisation en vue de publier la prochaine version C++17 et nous permettra de vérifier ce titre provocateur (comment ça mineure ?). Cette dépêche peut intéresser tous les lecteurs de LinuxFr.org, pas seulement les développeurs. Les prochaines dépêches seront plus techniques.
C++17 fixe l’ordre d’évaluation des expressions
Le C++ est un langage bien présent et depuis longtemps dans les logiciels libres (environnements de bureau, outils bureautiques, navigateurs Web…). L’an 2017 approche à grands pas avec la promesse d’un tout nouveau C++17.
Pour finir l’année, voici le calendrier de l’Avent du C++ avec des dépêches pédagogiques sur ce qui nous attend en 2017. Après deux dépêches de mise‐en‐bouche, nous entrons enfin dans le vif du sujet avec deux spécifications techniques concernant l’ordre d’évaluation des expressions. Allez, c’est parti ! ᕕ(ᐛ)ᕗ
Moi, expert C++, j’abandonne le C++
Ma carrière professionnelle de développeur C a débuté en 1994 et j’ai naturellement adopté avec enthousiasme le C++ en 1999. J’étais un développeur C++ heureux et j’avais considéré la nouvelle version du standard C++11 juste comme une évolution tant attendue. En 2015, je réalise enfin à quel point, il a révolutionné l’écosystème C++ et ses bouleversements dans l’état d’esprit de la communauté. Je me passionne alors pour C++11, C++14, puis C++17, je m’implique beaucoup, je deviens un référent pour mes collègues, je donne des conférences sur ce langage, j’organise des meet‐ups à Paris, je publie de nombreux articles C++ sur LinuxFr.org…
En 2018, une expérience change radicalement ma façon d’appréhender le développement logiciel.
Journal C++17 est sur les rails
À la dernière réunion du comité de normalisation de C++ qui a eu lieu à Jacksonville (Floride), les fonctionnalités de C++17 ont été plus ou moins gelées. On sait désormais ce qu'il y aura dedans mais aussi ce qu'il n'aura pas dedans. Et ça crée pas mal de remous.
Dans les nouveautés attendues :
- une API pour gérer le système de fichier (basée sur Boost.Filesystem)
- des algorithmes parallèles (ceux de la STL où on a ajouté un argument en premier (…)
Journal Gestion de l'erreur - C++ - std::optional
Introduction
Ce journal discute de la gestion d'erreur lors des appels de fonction. Dans la première partie, nous discuterons plusieurs solutions de gestion d'erreur classiques rencontrée dans de nombreux languages comme C, C++, Python, etc. Dans la seconde partie, nous présenterons std::optional<T>
, une nouvelle classe de la librairie standard C++17 et nous discuterons comment celle-ci change la gestion d'erreur. Pour finir je donnerai un avis personnel sur l'API de cette classe que je n'aime pas, et je proposerai une (…)
C++ se court-circuite le constructeur de copie
Le calendrier de l’Avent du C++ continue. Après quelques trous dans le calendrier, aujourd’hui une nouvelle surprise : le court-circuit du constructeur de copie.
Cette fonctionnalité est présente dans le C++ depuis la nuit des temps et pourtant peu connue, alors que ses effets de bords peuvent être redoutables. Cette dépêche très pédagogique explique tous les détails d’une optimisation ultime.
C++17 indique la disponibilité des en‐têtes (header)
Chaque jour de décembre a droit à sa surprise. Après l'ordre d'évaluation, aujourd'hui, le calendrier de l’Avent du C++ présente la Spécification Technique P0061 concernant une macro magique : #define __has_include
.
C++17 libère size(), data() et empty()
Cette évolution est dans la continuité de la libération de begin()
et end()
en C++11. Ces trois nouvelles fonctions, size()
, data()
et empty()
, avaient été oubliées lors des deux dernières évolutions. Le C++17 corrige le tir.
Tout d’abord, nous allons revenir sur les raisons de cette évolution. Puis, nous détaillerons ce qu’apporte chacune de ces trois fonctions. Et, pour conclure, nous verrons comment on va pouvoir les utiliser.
C++17 exprime la virgule flottante en hexadécimal et offre des cadeaux aux lecteurs de LinuxFr.org
Chaque jour (ouvré) de décembre a droit à sa surprise. Après le if constexpr
, aujourd’hui, le calendrier de l’Avent du C++ présente la spécification technique P0245 concernant le littéral pour exprimer la virgule flottante en hexadécimal.
C++17 garantit le court-circuit de copie (suite de la précédente dépêche)
Le calendrier de l’Avent du C++ continue son bonhome de chemin. Chaque jour, ou presque, une nouvelle surprise est offerte aux lecteurs de LinuxFr.org. La dépêche sur l’élision de la copie nous a mis l’eau à la bouche :
Comment résoudre le dilemme entre cette optimisation et le fait de ne pas pouvoir en bénéficier dans un code portable ?
Alors, entrons dans les entrailles de la spécification technique P0135 guidés par cette dépêche pédagogique, et découvrons comment le C++ s’améliore de version en version.
C++17 branche à la compilation (`if constexpr`)
Chaque jour de décembre a droit à sa surprise. Après la fixation de l’ordre d’évaluation des expressions, aujourd’hui, le calendrier de l’Avent du C++ présente la spécification technique P0292 concernant les conditions à la compilation, grâce à if constexpr
.
Journal Jouons avec le ``switch`` et C++17
Et non, ceci n'est pas un journal sur la switch, juste un partage rapide et amusé d'une version alambiquée mais qui fait tourner la tête (comme beaucoup de choses sortant d'un alambic, n'est ce pas ?):
template<unsigned N>
__attribute__((noinline)) void stuff() {}
// manual switch
void manual_switch(int i) {
switch(i) {
case 0: return stuff<0>();
case 1: return stuff<1>
(…)
C++17 adapte le static_assert() aux usages
Douzième rencontre parisienne C++ mercredi 27 avril 2016
L'association C++FRUG organise la douzième rencontre parisienne C++ Francophone avec pour nom de code : decltype(new event)
.
- Mercredi 27 avril 2016 de 19:00 à 21:30 ;
- 43 Rue Beaubourg, Paris, locaux de Mobiskill Partner ;
- Métros Rambuteau (ligne 11) et Châtelet - Les Halles (RER A, B, D et ligne 4) — Bus 29, 38, 47, 75, N12, N13, N14 et N23 — Station vélib n°3010.
Horaires | Programme |
---|---|
19:00 | Accueil |
19:30 | Présentations éclairs (Lightning talks) |
20:00 | Pause dinatoire, pizzas et bières offertes par Mobiskill Partner |
20:30 | Révolution des <algorithme> en C++17 |
21:15 | Informations générales et fin de la rencontre |