URL: https://linuxfr.org/news/cpp11-sur-le-fil Title: C++11 : sur le fil Authors: nazcafan Florent Zara et Xavier Teyssier Date: 2013年06月07日T19:21:36+02:00 License: CC By-SA Tags: c++ et c++11 Score: 28 Dans la course effrénée que se livrent les compilateurs, GCC vient de gagner une manche en étant le premier à fournir une implémentation complète du **langage** C++11. Les développeurs ont profité de la [sortie de la version de maintenance 4.8.1](http://article.gmane.org/gmane.comp.gcc.announce/69) pour implanter les deux fonctionnalités manquantes : - les `rvalue-references` pour le pointeur `this` - l'utilisation de `decltype` sur des expressions de type incomplet NdM : _merci à nazcafan pour son journal._ ---- [Journal à l'origine de la dépêche](http://linuxfr.org/users/nazcafan/journaux/c-11-sur-le-fil) [GCC 4.8.1 Released](http://article.gmane.org/gmane.comp.gcc.announce/69) ---- ### les `rvalue-references` pour le pointeur `this` ### Celles-ci permettent (entre autres) de surcharger des fonctions membres quand `this` est une `rvalue` ; voici un exemple tiré de la [proposition originale](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1821.htm) : ```c++ class X { std::vector data_; public: // ... std::vector const & data() const & { return data_; } std::vector && data() && { return data_; } }; X f(); // ... X x; std::vector a = x.data(); // copie du vector std::vector b = f().data(); // move du vector ``` ### l'utilisation de `decltype` sur des expressions de type incomplet ### La limitation de `decltype` à des types complets posait des [problèmes d'instanciation de template en cascade](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2011/n3276.pdf). Ce changement a notamment bénéficié aux bibliothèques boost qui ont du coup [changé le comportement](http://www.boost.org/users/news/a_special_note_for_boost_1_52_0_and_higher.html) de leur `result_of` pour s'aligner sur le comportement de [`std::result_of`](http://en.cppreference.com/w/cpp/types/result_of). L'annonce de cette sortie semble être destinée a couper l'herbe sous le pied de LLVM 3.3 dont la publication est imminente. Toutefois, il s'agira tout-de-même d'une victoire en demi-teinte puisque la libstdc++ de GCC [ne fournit toujours pas](http://gcc.gnu.org/onlinedocs/libstdc++/manual/status.html#status.iso.200x) certains composants de la bibliothèque standard, telles les expressions rationnelles. La [libc++](http://libcxx.llvm.org/) du projet LLVM est déjà complète, ce qui devrait faire de LLVM 3.3 le premier compilateur à prendre en charge le standard C++11 dans sa totalité (langage + bibliothèque standard).

AltStyle によって変換されたページ (->オリジナル) /