C++ 11
En 2011, le langage
C++
a vécu une mise à jour considérable. Le standard C++ 11 a été accepté
à l'unanimité en 2011, ayant
été officiellement ratifié le 25 mars (aussi, http://www.networkworld.com/news/2011/032811-iso-finalizes-c.html,
http://www.informit.com/guides/content.aspx?g=cplusplus&seqNum=533).
Selon certains, c'est le temps d'un retour au code natif : http://www.infoworld.com/d/application-development/hail-the-return-native-code-and-the-resurgence-c-170142
- La version la plus récente du Working Draft en ma possession
pour le moment est indiquée ici.
-
http://www.slideshare.net/devstonez/trends-and-future-of-c-evolving-a-systems-language-for-performance-by-bjarne-stroustrup
- L'état de la situation, selon les principaux
compilateurs :
http://www.aristeia.com/C++0x/C++0xFeatureAvailability.htm
- http://en.wikipedia.org/wiki/C%2B%2B11
- Une introduction par
Bjarne Stroustrup
en 2009 :
https://www2.research.att.com/~bs/what-is-2009.pdf
- http://www2.research.att.com/~bs/C++0xFAQ.html
-
http://punchcard.wordpress.com/2011/11/01/c11-c0x-documentation/
- Une introduction rapide à ce que devait être C++ 11
(prudence : texte de 2007) :
http://www.pvv.org/~oma/cpp0x_aquadi_nov_2007.pdf
- Introduction plus récente à C++ 11,
par Danny Kalev en 2012 :
http://blog.smartbear.com/software-quality/bid/167271/The-Biggest-Changes-in-C-11-and-Why-You-Should-Care
- Diaporama listant brièvement plusieurs des éléments intéressants de ce
standard, par Alex Sinyakov en 2013 :
http://dl.dropboxusercontent.com/u/13100941/C%2B%2B11.pdf
- Un survol de quelques-unes des avancées de ce standard :
- Quelques
idiomes et pratiques propres au à ce nouveau standard, par
Herb
Sutter depuis 2011 :
http://herbsutter.com/elements-of-modern-c-style/
- La constitution du comité :
http://www.open-std.org/jtc1/sc22/wg21/
- http://www2.research.att.com/~bs/evol-issues.html
- http://docs.google.com/Doc.aspx?id=ajfb44js8vjx_bchdmtqvpnxv4
- http://www.artima.com/cppsource/wishlist.html
- Comment s'y prend-on pour faire progresser un standard?
http://www.gotw.ca/publications/mill20.htm
-
http://herbsutter.spaces.live.com/blog/cns!2D4327CC297151BB!159.entry
- http://www.drdobbs.com/cpp/184401958
- http://www.devx.com/SpecialReports/Article/38813/0/page/1
- http://www.artima.com/cppsource/cpp0x.html
-
http://herbsutter.com/2010/03/13/trip-report-march-2010-iso-c-standards-meeting/
- Des fichiers en mémoire :
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n2044.html
-
http://www-949.ibm.com/software/rational/cafe/blogs/cpp-standard/2009/07/20/the-view-or-trip-report-from-the-july-2009-c-standard-meeting
-
http://www-949.ibm.com/software/rational/cafe/blogs/cpp-standard/2009/07/20/the-view-or-trip-report-from-the-july-2009-c-standard-meeting-part-2
- Questions de spécification de complexité :
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2009/n2909.pdf
- http://gcc.gnu.org/projects/cxx0x.html
-
http://www.ibm.com/developerworks/aix/library/au-gcc/index.html
- L'impact du nouveau standard :
- L'analyse statique et le nouveau standard :
- Poser un regard vers le futur : de quoi avons-nous besoin maintenant
et demain? Une opinion de Dean Michael Berris en 2011 :
http://cplusplus-soup.com/2011/10/31/new-c-standard-new-focus/
- Texte intéressant d'Andrzej Krzemieński sur les fonctions de
C++ 11 qui sont utiles... et ne font rien :
http://akrzemi1.wordpress.com/2011/11/12/functions-that-do-nothing/
- En 2012, Sumant Tambe propose ce qu'il qualifie
de nouveaux idiomes pour C++ 11 :
http://fr.slideshare.net/SumantTambe/c11-idioms-silicon-valley-code-camp-2012
- Ce que C++ 11 apporte de neuf :
- Un détail technique aux ramifications intéressantes, les
templates
extern (à ne pas confondre avec les
templates
qualifiés export qui, eux, sont retirés
du standard) :
http://www.informit.com/guides/content.aspx?g=cplusplus&seqNum=549
- Certaines parties de la bibliothèque standard de
C++ 98
et de sa révision
C++ 03 évoluent
en fonction des nouvelles facilités de C++ 11,
comme par exemple les classes std::unary_function et
std::binary_function qui sont dépréciées :
- Parfois, ce sont les (rares) dialectes qui offrent des suggestions pour le
standard (même si personnellement, je n'aime pas beaucoup celle-ci, qui
alourdit l'écriture) :
- Étude de cas, proposée par Lenny Maiorani en 2014, à propos de l'impact
d'un passage de
C++ 98 à C++ 11
sur le nombre de lignes de code source dans un programme :
https://devcentral.f5.com/articles/case-study-linerates-c98-to-c11-migration
- Dix techniques pour éviter de se faire du mal avec C++ 11,
par Victor Laskin en 2015 :
http://vitiy.info/ten-ways-to-not-shoot-yourself-in-the-foot-using-cpp11
(notez que je suis en désaccord avec lui dans certains cas... En particulier,
préférez unique_ptr à
shared_ptr chaque fois que vous le pourrez!)
- Quelques pièges (et surtout, quelques atouts!) particuliers de la
programmation sur
systèmes 64 bits avec C++ 11,
rapportés par Andrey Karpov en 2015 :
http://www.viva64.com/en/b/0253/
- Compiler avec C++ 11 sur Raspberry Pi,
par Paul Silisteanu en 2015 :
https://solarianprogrammer.com/2015/01/13/raspberry-pi-raspbian-install-gcc-compile-cpp-14-programs/
- Comment moderniser le code C++ pour le rapprocher de ce que permet C++ 11
et ses successeurs, texte de 2015 :
http://www.jarchitect.com/Blog/?p=1566
- Simplifier le code grâce à C++ 11, texte
de Tony DaSilva en
2015 :
http://bulldozer00.com/2015/02/05/make-simple-tasks-simple/
- Des raisons d'adopter C++ 11, par Andrew
Parker en 2015 :
http://www.develop-online.net/tools-and-tech/made-with-marmalade-five-reasons-to-try-c-11/0214093
- Interaction entre C++ 11 et le
code 64 bits, un texte de
Sergey Vasiliev en 2014 :
https://medium.com/@CPP_Coder/c-11-and-64-bit-issues-b74beac9b2a8
- Série de textes par Jefferson Amstutz en 2017,
qui explique ses morceaux préférés de C++ 11 :
- Refactoriser le code
C++ 98
ou
C++ 03
vers du code C++ 11 ou
C++ 14
avec
clang-tidy, un texte de 2017 par Kevin
Funk :
https://www.kdab.com/clang-tidy-part-1-modernize-source-code-using-c11c14/
- Série de textes par Luigi Ballabio en 2018,
explorant l'automatisation d'un processus de migration des sources d'une
version antérieure de
C++ vers C++ 11 :