mercredi 24 novembre 2021
« This talk by Ben Dean at the Cpp Con 2021 gives a lot of insight about why and how to achieve composability. Ready to say goodbye to raw conditions and raw loops ?  »
[c++]
std::source_location [Sébastien]
mercredi 24 novembre 2021
« Une nouveauté du C++ 20 très utile pour le logging: cela permet d'avoir facilement des informations sur l'endroit dans le code source (fichier, ligne, nom de fonction) où une opération spécifique a eu lieu. On pouvait auparavant utiliser des macros telles que __FILE__ ou __LINE__, mais on pouvait être dans ce cas amené à devoir alourdir la signature (par exemple la function fun de l'exemple aurait une signature ressemblant à template <typename T> void fun(T x, const char* file, int line).  »
[c++]
mercredi 10 novembre 2021
« In this post in two parts various way of replacing new and delete are discussed like: using the stack, standard containers, smart pointers, ...  »
[c++]
C++ By Example [Vincent]
mercredi 10 novembre 2021
« Une liste d'exemples pour apprendre le C++.  »
[c++]
jeudi 14 octobre 2021
« The creator of ZeroMQ, Martin Sústrik, wrote this two parts blog entry back in 2012. Along with this post, he started to rewrite ZeroMQ in plain C and created nanomsg.  »
jeudi 14 octobre 2021
« If you are interested in 3D and have a little background in C++, this online book and tutorial is for you.  »
lundi 7 juin 2021
« Tout ce qu'il faut savoir sur le mot clé 'auto'  »
[c++]
lundi 10 mai 2021
« This second parts about Mixins introduces 'Mixin classes' in C++, compared with the Curiously Recursive Pattern (CRTP).  »
mardi 27 avril 2021
« Comment capturer *this dans une fonction lambda en C++, en fonction de la version de votre C++  »
[c++]
lundi 19 avril 2021
« Présentation d'une nouvelle forme d'initialisation des variables en C++ qui à première vue semble contre-intuitive mais qui présente en fait de multiples avantages (elle est promue notamment par Herb Sutter). Au-delà de cet exemple, l'auteur encourage à essayer de nouveaux styles et à ne pas se cantonner à ceux en vigueur au moment où on apprend le langage (et ce conseil ne se restreint évidemment pas au C++!)  »
jeudi 1 avril 2021
« Cet article explique à partir d'exemples comment se comporte un compilateur C++ à travers les différentes étapes de preprocessing, compilation et l'édition de liens.  »
lundi 22 mars 2021
« Une présentation de nouvelles possibilités d'allocation de mémoire dans une expression constexpr (calculée à la compilation) avec le C++ 20.  »
[c++]
jeudi 11 mars 2021
« Une comparaison rapide de la gestion des valeurs flottante -0/+0, -INF/+INF entre les langages C++ /Java / Swift / GO / C#  »
Default comparisons [Sébastien]
jeudi 11 mars 2021
« Le C++ va enfin introduire dans le prochain standard (pas encore largement supporté par les compilateurs courants) un moyen de déclarer par défaut les opérateurs de comparaison.  »
[c++]
mercredi 10 mars 2021
« A quite detailed overview for C++ programmers interested in Rust, and who prefer watching videos over reading 'The Book'. From Henrik Niemeyer at C++ London.  »
mardi 2 mars 2021
« The journey of what happens from a simple Eigen Vector addition in C++ to assembly. From high level like Template MetaProgramming, Curiously Recurring Template Pattern or traits, to low level like alignment and Streaming SIMD Extensions (SSE) intrinsic functions.  »
mardi 2 mars 2021
« Une introduction claire à une nouvelle feature du C++ 20: les concepts, qui commencent à être supportés par les compilateurs.  »
[c++]
C++17: std::any [Vincent]
mercredi 10 février 2021
« Présentation de la fonctionnalité std::any du C++17 et de quelques astuces pour l'utiliser.  »
[c++]
mardi 2 février 2021
« Des conseils pour bien écrire des headers en C et C++ - qui sont pour la plupart bien cernés par des outils tels que include-what-you-use.  »
[c, c++]
Modern C++ design patterns [Laurent Steff]
lundi 25 janvier 2021
« This article, based on two book, one of the 'Gang of Four', another one by Alexandrescu teases us about design patterns with modern C++.  »
jeudi 21 janvier 2021
« Before using them, for me, traits classes were only something I read in Effective C++ and seen a lot in Rust while tempting to discover it. Thanks to discussions with Vincent and Sébastien, I had to use this technique in C++. And it made, on my sense, template specialization more readable and elegant. This old article gives good explanations.  »
[c++]
Include What You Use [Sébastien]
mardi 12 janvier 2021
« Jonathan Boccara, l'auteur du blog FluentCpp, fait une promotion assez active de include-what-you-use, qui permet de faire le tri dans les include des fichiers pour être sûr que tous ceux pertinents - et uniquement ceux-là - soient présents, permettant d'avoir une base de code plus structurée et un temps de compilation plus rapide. Ma propre expérience a tourné un peu court: je suis tombé sur une issue pas résolue depuis 2017 liée à l'inclusion d'une librairie externe (le ticket mentionne Boost mais c'est Xtensor-blas qui a bloqué pour moi) mais avant ce blocage ça semblait très prometteur, avec un temps d'exécution relativement rapide et des retours assez pertinents.  »
[c++, c]
mardi 12 janvier 2021
« En C++, l'héritage virtuel permet de résoudre le problème du diamant. Cet article explique quand et comment l'utiliser.  »
Pattern matching in C++ [Laurent Steff]
lundi 14 décembre 2020
« This talk covers quickly a lot of concepts (state machine, visitor pattern, algebraic data types, ...) and libraries (including Michael Park's variant and match). It gives access, for C++ developers who would fancy it, to declarative alternatives to the if-else chains.  »
How Xtensor was written [Laurent Steff]
jeudi 10 décembre 2020
« An interesting series giving insight on how was created Xtensor, from one of their developer.  »
jeudi 3 décembre 2020
« Un exemple simple et un plus compliqué du "Range-based for statements with initializer" du C++20.  »
[c++]
jeudi 19 novembre 2020
« Les processeurs ARM ont un type de mémoire dit "weakly-ordered" contrairement au x86/64 d’Intel et d’AMD. Cet article de 2012 présente un exemple C++ très simple qui en démontre les conséquences.  »
[c++, cpu]
jeudi 19 novembre 2020
« Un court entretien de Bjarne Stroustrup, où il explique notamment comment le C++ évolue: "You start small, articulate fundamental principles, articulate long-term ideals, and develop based on feedback from real-world use."  »
[c++]
jeudi 29 octobre 2020
« A complement to http://isocpp.org/faq, by Bjarne Stroustrup, with some insights about design choices (string, arrays, ...)  »
[c++]
lundi 19 octobre 2020
« Une liste de 17 petites innovations introduites dans la norme C++ 17.  »
[c++]
jeudi 15 octobre 2020
« A fairly biased but yet interesting comparisons between those languages and their communities.  »
[c++, c, go, rust]
jeudi 8 octobre 2020
« Un benchmark en C++ qui prouvent que la vérification de l'overflow sur des opérations entières peut être très coûteuse.  »
[c++]
jeudi 8 octobre 2020
« An opinionated article about a legendary game written in C++ by John Karmak. Please read also Karmak's comment, it adds useful insights.  »
mardi 22 septembre 2020
« En attendant les concepts du C++ 20, un historique des méthodes pour pouvoir tester si une classe contient ou nom un attribut d'un nom donné (ce qui peut être très utile pour de la métaprogrammation).  »
mardi 22 septembre 2020
« L'article présente un cas pratique de polymorphisme à l'exécution, implémenté sans appel de fonction virtuelle, grâce au type std::variant.  »
[c++]
lundi 14 septembre 2020
« Un article interessant sur les messaging pattern et zeroMQ, applique au grid search  »
A glimpse at C++ internals [Laurent Steff]
lundi 14 septembre 2020
« For those who are curious to understand what happens behind the scene, this article tries to explain how C++ code gets translated into low level instructions. For readability, C is used instead of assembly.  »
[c++, c]
lundi 7 septembre 2020
« Le récit de la création à l'abandon (par son créateur du moins - le projet a été repris par d'autres) d'un projet open source visant à proposer une alternative à Doxygen plus adaptée aux besoins très spécifiques du C++.  »
lundi 31 août 2020
« Une compilation de cas d'utilisation de la fonctionnalité 'if constexpr' venant avec le C++17  »
[c++]
lundi 31 août 2020
« En dépit de l'aversion affichée par Elon Musk en 2018 pour ce langage, la pile logicielle de Space X est intégralement écrite en C++.  »
mercredi 15 avril 2020
« Un exemple très simple et parlant pour s'attaquer aux variadic templates en C++  »
[c++]
lundi 30 mars 2020
« Une liste assez complète avec plein de détails pour des compilateurs C++ en ligne.  »
jeudi 30 janvier 2020
« En C++20, l'apparition de l'opérateur vaisseau spatial (<==>) permettra de simplifier son code, puisqu'en le définissant, on aura gratuitement les opérateurs ==, !=, <, <=, > et >=.  »
[c++]
mercredi 15 janvier 2020
« En adoptant les solutions fournies par les sites d'entraide pour les développeurs il existe le risque d'adopter en même temps les failles de sécurité que les dites solutions pourraient contenir éventuellement. Cet article se penche sur ce problème en exposant brièvement huit failles parmi les plus courantes.  »
Comparing parallel Rust and C++ [Virgile Andréani [InBio]]
mercredi 13 novembre 2019
« Une fantastique démonstration d'optimisation, qui explique comment s'approcher de la vitesse théorique maximale d'un ordinateur en prenant en compte toutes les astuces de mémoire, jeu d'instructions et parallélisme. Dans le même domaine, ce cours peut également être intéressant.  »
mercredi 16 octobre 2019
« Un exemple très de mise en place des sanitizers avec gcc ou clang et comment les mettre en place à titre de tests.  »
jeudi 19 septembre 2019
« Trois astuces de syntaxe du C++ 17 que je ne connaissais pas; deux d'entre elles répondent assez directement à des besoins que j'ai souvent dans mes codes.  »
[c++]
jeudi 5 septembre 2019
« Le futur standard C++ 20 a été adopté fin juillet; des notes plus détaillées ont été publiées sur reddit.  »
[c++]
LearningDoxygen [Vincent]
jeudi 5 septembre 2019
« Un wiki avec plein d'exemples (souvent plus parlant que dans la documentation officielle) pour utiliser le générateur de documentation Doxygen.  »
mercredi 12 juin 2019
« WebAssemby ouvre les portes du Web à d'autres langages que le Javascript comme C, C++ et Rust. L'auteur fait ici un retour d'expérience sur son utilisation en C++ et propose un banc de test pour tester ses propres librairies.  »
mercredi 12 juin 2019
« Comment créer un conteneur hétérogène en C++ avec std::variant (c++17) et le parcourir avec std::visit.  »
The xtensor vision [Christian]
mercredi 5 juin 2019
« Le C++ n'est pas cité souvent parmi les langages de la science des données (Data Science) ... Pourtant il arrive qu'il soit le principal recours possible quand on est face à des problèmes de performance. Quand cela arrive on est confronté à la relative pauvreté des moyens dans la manipulation de données par rapport à d'autres langages de plus haut niveau comme Python, R ou Julia. Le présent article illustre les capacités de la bibliothèque Xtensor de combler ce manque en apportant des fonctionnalités comparables à celles de NumPy (par exemple) et surtout des capacités remarquables d'intégration avec les trois autres langages évoqués précédemment.  »
jeudi 23 mai 2019
« Une solution élégante à un problème classique en C++. La discussion se poursuit dans le post suivant qui se conclut par une syntaxe très courte faisant appel à la librairie range - v3 que je ne connaissais pas.  »
[c++]
C++ Online Compilers [Sébastien]
jeudi 20 décembre 2018
« Un lien qui recense les solutions de compilateurs C++ en ligne, qui peuvent être utiles notamment pour les formations ou pour tester rapidement un code sous différents compilateurs pour certaines de ces solutions.  »
[c++]
jeudi 13 décembre 2018
« Un lien de veille de la semaine passée parlait de "type erasure", en mentionnant bien qu'il ne s'agissait pas du pattern C++ du même nom. Ca a piqué ma curiosité et je suis tombé sur ce lien très didactique qui explique ce pattern très intéressant qui permet notamment de stocker dans un même std::vector des objets ne dérivant pas d'une base commune.  »
mercredi 5 décembre 2018
« Un retour d'expérience intéressant sur le développement d'un projet C++ piloté par les tests, et des exemples pour faire des tests unitaires avec Boost.test et des bouchons avec google mock (intégré depuis à google test).  »
jeudi 25 octobre 2018
« Une explication des concepts de covariance et contravariance avec des exemples dans plusieurs langages.  »
jeudi 21 juin 2018
« Un post bref expliquant deux nouveaux concepts introduits dans le C++ 17. Il donne un lien vers un article plus complet (qui donne notamment une struct template "overload" qui simplifie l'usage et pourrait être introduit dans le standard C++20); on peut aussi lire cet article pour avoir un point de vue critique sur ces nouveaux features.  »
[c++]
Remember the Vasa! [RT Devlog]
mercredi 30 mai 2018
« Une note de Bjarne Stroustrup, le créateur du C++, qui s'inquiète de la profusion de proposals pour le C++ 20 et d'un manque de vision globale.  »
[c++]
mercredi 30 mai 2018
« Ce site nous propose son "truc du jour" sur le sujet du C++11, 14 et 17.  »
Quick-bench [Gautier Bureau (RTE)]
mercredi 4 avril 2018
« Site qui utilise la librairie de Google Benchmark qui permet de benchmarker rapidement des fonctions.  »
Compiler explorer [Gautier Bureau (RTE)]
mercredi 4 avril 2018
« Permet de regarder la sortie d'un compilateur en direct et voir un peu les optimisations faites. J'ai découvert ce lien en regardant une keynote de la cppcon2017.  »
[c++]
mercredi 28 mars 2018
« Dans ce post de blog, l'auteur nous montre comment jouer avec les range boost avec des exemples bien trouvés, et comment ils se sont intelligemment inspirés du langage Python. Ils ne seront malheureusement pas intégrés dans le C++17, puisqu'ils ont d'abord besoin de la notion de concept  »
mercredi 21 mars 2018
« Une illustration sur un programme très simple de l'évolution du C++ 98 au C++ 17: la version C++ 98 est simple mais peu robuste, en C++03 c'est plus sécurisé mais beaucoup plus intimidant et les versions suivantes permettent de regagner en clarté tout en conservant la robustesse (et en gagnant en efficacité avec constexpr). Cet article m'a permis également de découvrir l'existence de l'opérateur "".  »
[c++]
Github: Catch2 [Sébastien]
mercredi 7 mars 2018
« Catch2 est une librarie header-only pour écrire des tests unitaires très faciles à déployer et utiliser, découverte sur un fil Reddit. Un bémol cependant: elle ne gère pas encore le cas CHECK_ABORT.  »
lundi 12 février 2018
« Cet article décrit l'utilité des revues de code, et conseille vivement l'utilisation (voire l'achat) d'un bon analyseur statique de code. Le site en lui même contient plein de bonnes ressouces.  »
Fortify source [Vincent]
mercredi 31 janvier 2018
« Récemment, j'ai eu un bug (buffer overflow) qui m'a été remonté grâce à l'option FORTIFY_SOURCE qui est maintenant activée par défaut sur Ubuntu et Fedora. Ce blog explique les grandes de son fonctionnement.  »
mercredi 24 janvier 2018
« Illustration d'un comportement dangereux du C++: comment un attribut pointeur peut casser l'encapsulation. Deux solutions sont proposées: l'une qui peut être déployée même avant le C++ 11 mais requiert un peu de discipline (emploi systématique d'accesseurs) et une nouvelle plus sécurisée qui sera introduite normalement dans le C++ 20 mais est déjà disponible pour clang et gcc dans le namespace experimental.  »
Unit tests [Vincent]
mercredi 24 janvier 2018
« Des exemples de bonnes pratiques pour faire des tests unitaires en C++ avec CppUnit.  »
mercredi 17 janvier 2018
« L'auteur de cet excellent blog nous montre comment séparer des chaînes de caractères en C++ en utilisant la librairie standard, avec Boost et avec le futur C++20.  »
[c++]
mercredi 29 novembre 2017
« Un blog qui détaille un projet pour faire du C++ dans les notebooks de Jupyter. Les fonctionnalités commencent à être vraiment intéressantes et je vous encourage donc à lire ce blog sur la question. Le packaging conda est en cours et vous devriez pouvoir facilement installer tous ces paquets dans les prochaines semaines.  »
C++17 features [Sébastien]
mercredi 22 novembre 2017
« Ce post de blog décrit les nouvelles features du C++ 17, ainsi que les versions des compilateurs qui les supportent. Il propose aussi une série d'articles plus détaillés qui commencent ici.  »
[c++]
Xtensor [Sébastien]
mercredi 8 novembre 2017
«  Une librairie C++ pour la manipulation de tableaux multidimensionnels, avec une interface très proche de celle de numpy (voir ce lien pour s’en convaincre) et des bindings pour Python, Julia et R. A noter que deux des développeurs de cette librairie devraient prochainement intervenir lors d’un prochain café LOOPS.  »
mercredi 11 octobre 2017
« Un post qui rappelle le feature constexpr introduit dans le C++11 et introduit le très utile if constexpr du C++17, supporté au moins par les versions récentes des compilateurs clang et gcc. J'ai appris incidemment dans le deuxième exemple une utilisation de decltype très intéressantes qui permet de vérifier si une classe possède une méthode donnée en utilisant l'opérateur virgule.  »
Abseil [Virgile Andreani]
mercredi 27 septembre 2017
« C'est un répertoire de bibliothèques et d'abstractions développées par Google pour leurs projets. Un certain nombre de ces ressources ont été incorporées dans les standards successifs de C++, ce qui en fait des bibliothèques pratiques quand on ne peut pas faire passer sa base de code à un standard plus récent mais que l'on souhaite néanmoins utiliser des abstractions modernes.  »
[c++]
mercredi 30 août 2017
« Une réflexion intéressante sur l'usage des smart pointers; avec notamment des cas où ils ne sont pas la solution à privilégier. »
[c++]
Wandbox [Sébastien]
mardi 22 août 2017
« Une interface qui permet de tester des snippets de code d'une trentaine de langages avec différents compilateurs / interpréteurs. Le lien est une illustration avec un snippet de code qui exploite une nouvelle feature du C++17 (if constexpr): on peut déterminer qu'il faut clang 3.9.1 ou gcc 7.1 pour que le code compile. »
C++ et mutable [Vincent]
mercredi 14 juin 2017
« Sur ce post de blog, l'auteur revient sur le mot clé "mutable" en C++ à travers un exemple et des explications d'utilisation. »
[c++]
C++ Super-FAQ! [Sébastien]
jeudi 4 mai 2017
« Une vraie mine d’informations sur le fonctionnement du C++ et ses multiples idiomes, avec des explications très claires. »
[c++]
jeudi 20 avril 2017
« Ce petit tutoriel reprend un à un les concepts et la sémantique sur cette nouveauté du C++ 11, le mouvement. »
[c++]
jeudi 23 mars 2017
« Une explication claire des références rvalues et de la move semantic introduites dans le C++ 11. »
[c++]
vendredi 9 décembre 2016
« Sur ce billet de blog, le programmeur explique comment attrapé les exceptions sur les nombres flottants en C++. Les fichiers core ainsi générés donne l'origine de toutes sortes d'erreurs de calcul sur les nombres flottants. »
[c++]
vendredi 14 octobre 2016
« Ce petit tutoriel explique comment installer et utiliser les outils sparse, splint, cpplint et clang pour faire une analyse statique de vos codes C/C++. »
vendredi 17 juin 2016
« Dans ce post de blog, l'auteur nous explique comment configurer (que ce soit avec un Makefile classique, CMake ou autoconf) et utiliser l'analyseur statique de code C++ livré avec Clang, ainsi que son interface graphique pour visualiser les erreurs trouvées. »
anotherTest.pyx [Vincent]
vendredi 3 juin 2016
« Sur cet exemple, l'auteur nous montre comment résoudre des erreurs de double définition de fonction lorsque l'on cythonize du code en C++. »
Modern C++ [Vincent]
vendredi 13 mai 2016
« Dans cette présentation très simple, on voit rapidement par des exemples comment se passer des pointeurs en C++ moderne. »
[c++]
Pistache [Alexandre]
vendredi 8 avril 2016
« Un framework REST en C++. »
Breathe [Alexandre]
vendredi 11 mars 2016
« Un outil sympa de génération de documentation faisant le pont entre Sphinx et Doxygen (plutôt orienté C/C++). »
vendredi 26 février 2016
« Une série d'articles sur l'optimisation de son code C++ avec l'API de multithreading disponible en C++14. »
[c++]
vendredi 26 février 2016
« Dans cet article très détaillé, l'auteur fait un benchmark entre la std::list et les boost::intrusive::list, et les résultats sont assez surprenants, puisque cela améliore bien les performances, sauf pour certaines opérations quand les données commencent à être grosses. Le code est disponible sur github pour le rejouer.  »
[c++]
vendredi 29 janvier 2016
« Quelques réflexions intéressantes sur le C++... »
[c++]
vendredi 29 janvier 2016
« Dans cet article, l'auteur a voulu démontrer que l'on pouvait améliorer les temps de compilation de son projet C++ en "réinventant la roue". Il a fait des tests de performances avec std::unique_ptr et boost::flat_map qu'il a ré-implémenté pour voir les impacts sur les temps de compilation. »
[c++]
vendredi 8 janvier 2016
« Comment compiler son code C/C++ plus rapidement avec ccache et cmake. »
AddressSanitizer [Vincent]
vendredi 11 décembre 2015
« Clang 3.1 et GCC 4.8 proposent cet outil de détection de corruption mémoire. Il suffit de compiler avec l'option -fsanitize=address. La documentation Wikipedia explique les différents messages émis à l'exécution du code en fonction du type de corruption. »
vendredi 4 décembre 2015
« ... ou comment accéder à des sous ensembles de données en C++ comme on peut le faire en python. »
vendredi 2 octobre 2015
« Un long article avec des exemples concrets d'utilisation des smart pointers C++11. »
[c++]
vendredi 25 septembre 2015
« Un article qui revient sur la célèbre phrase de Linus Torvalds ("C++ is a horrible language") et qui essaie de tordre le cou à cette idée répandue, notamment grâce aux avancées faites par le C++11. »
[c++]
vendredi 18 septembre 2015
«  Un petit tutoriel pour prendre en main valgrind avec des exemples et leurs résultats. »
vendredi 11 septembre 2015
«  Une discussion intéressante sur les itérateurs en C++. »
[c++]
vendredi 11 septembre 2015
«  Comprendre le principe d'Empty Base Optimization (EBO pour les intimes) en C++ avec des exemples. »
[c++]
vendredi 10 juillet 2015
«  Le C++11 vient d'introduire l'opérateur et le constructeur de move. Un petit tuto pour expliquer les raisons de ce changement, ainsi qu'un exemple concret de son implémentation. »
[c++]
vendredi 3 juillet 2015
«  Le "curiously recurring template pattern" (CRTP) est un pattern en C++, dans lequel une classe Enfant hérite d'une classe template Parent<T>, où l'on va templater la classe Parent avec la classe Enfant (class Enfant : public Parent<Enfant>). »
[c++]
vendredi 20 mars 2015
«  Un tutorial yolinux pour configurer des outils Jenkins dédié à l'intégration continue en C++. »
Débuter en C++ [Vincent]
vendredi 6 mars 2015
«  Ce cours niveau débutant est très bien réalisé pour débuter C++. Et je ne dis pas ça juste parce que c'est un collègue du réseau LOOPS. La partie travaux pratiques permet d'aborder dans la pratique les grans thèmes du C++. »
vendredi 23 janvier 2015
«  Un petit article qui montre comment on peut appeler du code Python depuis un programme C/C++ et compiler le tout. »
vendredi 23 janvier 2015
«  On y explique en détail comment appeler du C, C++ ou Fortran depuis R. A travers un exemple, on voit :
  • les conversions de type entre les languages
  • comment compiler le code C, C++ ou Fortran depuis R
  • comment passer des données dans un sens, puis dans l'autre
  • comment débugger et faire du profiling de code.
 »
[c, r, fortran, c++]
c++ [Olivier]
vendredi 16 janvier 2015
«  Une bibliothèque C++ qui présente une interface simple pour définir/utiliser/commenter les arguments d'un programme en ligne de commande. »