La nouvelle version de GCC arrive et nous propose de nombreuses améliorations liées au support du C++11 et du C++14. Un des ajouts les plus importants est le support des expressions régulières à travers std::regex.
De plus, l'implémentation de la déduction du type de retour a été mise à jour pour correspondre à la norme N3638. Plus précisément, cela permet d'utiliser decltype(auto) à la place du auto seul :
Code : | Sélectionner tout |
1 2 3 | int& f(); auto i1 = f(); // int decltype(auto) i2 = f(); // int& |
Code : | Sélectionner tout |
[x = 42]{ ... };
Toutefois, il faut savoir que les tableaux à taille variable n'apparaîtront peut être pas dans C++14, mais seront intégrés dans un document à part et peut être dans C++17.
Code : | Sélectionner tout |
1 2 3 4 5 | void f(int n) { int a[n] = { 1, 2, 3 }; // envoie std::bad_array_length si n < 3 [&a]{ for (int i : a) { cout << i << endl; } }(); &a; // erreur, accès à l'adresse d'un tableau à taille variable } |
Code : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 | class A; int bar(int n); #if __cplusplus > 201103 class [[deprecated("A is deprecated in C++14; Use B instead")]] A; [[deprecated("bar is unsafe; use foo() instead")]] int bar(int n); int foo(int n); class B; #endif A aa; // warning: 'A' is deprecated : A is deprecated in C++14; Use B instead int j = bar(2); // warning: 'int bar(int)' is deprecated : bar is unsafe; use foo() instead |
Code : | Sélectionner tout |
1 2 3 4 5 | int i = 1048576; int j = 1'048'576; int k =0x10'0000; int m = 0'004'000'000; int n = 0b0001'0000'0000'0000'0000'0000; |
Code : | Sélectionner tout |
1 2 | double x = 1.602'176'565e-19; double y = 1.602'176'565e-1'9; |
Code : | Sélectionner tout |
1 2 | // un objet fonctionnel qui incrémente n'importe quel type auto incr = [](auto x) { return x++; }; |
- correction des fonctions membres constexpr sans const ;
- implémentation de la fonction std::exchange() ;
- adressage des tuples par le type ;
- implémentation de std::make_unique ;
- implémentation de std::shared_lock ;
- std::result_of respecte SFINAE ;
- ajout de l'opérateur () à integral_constant ;
- ajout d'expressions définies par l'utilisateur pour les types de la bibliothèque standard std::basic_string, std::chrono::duration et std::complex ;
- ajout de manipulateurs E/S pour les chaînes de caractères entre guillemets ;
- ajout de membres constexpr à <utility>, <complex>, <chrono> et quelques conteneurs ;
- ajout de std::integer_sequence traité au moment de la compilation ;
- ajout de traits de transformation plus propres ;
- modification des foncteurs de <functional> plus faciles à utiliser et plus génériques.
G++ embarque maintenant une implémentation de std::experimental::optional et std::experimental::string_view.
La fonction std::copy_exception est maintenant dépréciée et sera supprimée dans la prochaine version. Vous devez utiliser std::make_exception_ptr à la place.
Votre opinion

Source
Modifications de la version 4.9
Vous avez lu gratuitement 22 articles depuis plus d'un an.
Soutenez le club developpez.com en souscrivant un abonnement pour que nous puissions continuer à vous proposer des publications.
Soutenez le club developpez.com en souscrivant un abonnement pour que nous puissions continuer à vous proposer des publications.