Question

Comme beaucoup d’entre nous le savent (et beaucoup d’autres ne le savent pas), C ++ est en cours de rédaction finale pour la prochaine révision de la norme internationale, qui devrait être publiée dans environ deux ans. Les brouillons et les documents sont actuellement disponibles sur le site Web du comité . Toutes sortes de nouvelles fonctionnalités sont ajoutées, les plus importantes étant les concepts et les lambdas. Il existe un article Wikipedia très complet avec de nombreuses nouvelles fonctionnalités. GCC 4.3 et les versions ultérieures implémentent les fonctionnalités C ++ 0x .

En ce qui concerne les nouvelles fonctionnalités, j’aime vraiment beaucoup les traits de caractères (et les concepts appropriés), mais mon modèle principal est celui des modèles variadiques. Jusqu'à 0x, les longues listes de modèles ont généralement impliqué Boost Preprocessor et sont très désagréables à écrire. Cela facilite beaucoup les choses et permet aux modèles C ++ 0x d'être traités comme un langage parfaitement fonctionnel utilisant des modèles variadiques. J'ai déjà écrit du code très cool avec eux, et j'ai hâte de les utiliser plus souvent!

Alors, quelles fonctionnalités attendez-vous le plus ardemment?

Était-ce utile?

La solution

auto mot clé pour l'inférence de type variable

Autres conseils

Lambdas et listes d’initialisation.

De plus, les modifications facilitant l'intégration du C ++ dans un modèle mis au rebut sont plutôt intéressantes. Peut-être que C ++ 1x amènera effectivement un ramasse-miettes, mais 0x / 10 ne fait que mettre les choses en place pour l’éventualité.

Je veux des références Rvalues.

Toutes les autres nouvelles fonctionnalités sont des éléments sans lesquels nous pourrions facilement nous passer (fonctionnalités hélas). Cependant, jusqu’à présent, le manque de valeurs en C ++ a obligé des centaines d’auteurs de bibliothèques de modèles à & "Pirater &"; autour du numéro de référence Rvalue brisé.

Modèles variadiques! (Ce qui, combiné aux références de valeur r, nous donne une transmission parfaite!)

Fils et atomiques.

Avec les processeurs multicœurs, la norme C ++ 0x aurait dû être C ++ 07.

G.

Les énumérations fortement typées obtiennent mon vote. Cela fait environ 40 ans que Pascal les utilise, il est donc bon de voir le C ++ enfin rattraper son retard.

Cependant, la publication de la norme est vraiment un non-événement. Ce qui est beaucoup plus important, c'est lorsque les fonctionnalités que vous souhaitez utiliser sont réellement prises en charge de manière fiable et complète avec des chaînes d'outils du monde réel. Il y a des gens qui semblent réellement apprécier l'écriture de code conforme aux normes qui ne peut pas être compilée avec un compilateur connu. Bonne chance à eux.

  1. Cela doit être l’incorporation de certaines des bibliothèques Boost (shared_ptr < > et lier en haut de la liste)

  2. Le contrôle de l’installation des modèles devrait enfin résoudre le problème des temps de compilation énormes et rendre réellement possible l’utilisation de code de modèle moderne dans les grands projets.

  3. Typedefs de modèle

Beaucoup d'autres petites choses mais importantes, mais elles comptent dans le code de production.

Des concepts pour moi. Mais les listes d’initialisation, les lambdas et les modèles variadiques viennent en deuxième position.

Je ne peux pas choisir entre Type de pointeur nul , < a href = "http://en.wikipedia.org/wiki/C%2B%2B0x#Tuple_types" rel = "nofollow noreferrer"> Types de tuple ou Regex . «Foreach» est là aussi. Les "pointeurs intelligents" vont sans dire ...: -)

En gros, je suis vraiment impatient de voir la mise à jour.

Personnellement, je pense que l’utilisation intensive du type pointeur nul va attraper beaucoup de bugs. Les tuples sont parfaits pour traiter des données relationnelles. Beaucoup de choses intéressantes.

Ce n'est pas énorme, mais j'adore l'idée d'un véritable nullptr . Cela aurait dû être un mot clé depuis le git-go.

Des fermetures pour moi.

mot clé auto

Lambdas et Concepts

Crochet angulaire dans les déclarations de modèles imbriquées.

Je pourrai donc écrire

std::vector<std::vector<int>> a;

au lieu de l'horrible

std::vector<std::vector<int> > a;

La syntaxe for (auto x : collection) d'itération est très cool, je pense ... elle réduit littéralement la taille de nombreux en-têtes de boucle d'un facteur de 4 ou plus (les types d'itérateurs sont souvent ... verbeux)!

Cela signifie également que vous ne devez pas déréférencer l'itérateur dans le corps de la boucle (avec une boucle d'itérateur traditionnelle, vous devez toujours utiliser *i ou i->... pour obtenir la valeur de l'élément, mais ici vous pouvez simplement utiliser x), ce qui, dans certains cas, rend le code beaucoup plus agréable.

unicode, multithreading, hash_tables, pointeurs intelligents et expressions régulières.

ps: Je me demande pourquoi ils ne peuvent tout simplement pas procéder à une révision du code gr8 et accepter tous les boosts et les bibliothèques dans les standards et rendre la vie plus facile pour tous. Tout ce qu’ils auraient à résoudre, c’est d’accepter un modèle de collecte des ordures optionnel fonctionnel.

pointeurs intelligents. Cela fait vraiment un monde de différence de ne pas avoir à gérer explicitement en mémoire les objets alloués au tas.

Évidemment, vous devez toujours & "savoir ce que vous faites &"; mais d'après mon expérience, le nombre de bogues liés à la mémoire a été réduit d'au moins un ordre de grandeur dans les logiciels. travaillé avec.

La syntaxe va de mal en pis.

Les modèles variadiques et les lambdas sont sympas, bien que la syntaxe des deux soit malheureusement assez inacceptable.

J'aime constexpr en particulier en conjonction avec les modèles variadiques et les littéraux définis par l'utilisateur, nous pouvons enfin avoir des littéraux binaires et de nombreux autres goodies.

obj.bitmask |= 00001010B; 

REGEX !! et des bibliothèques de programmation parallèle bien que je ne connaisse pas encore toutes leurs fonctionnalités.

Littéraux de chaîne bruts ! Je pensais que les blocs de cordes ressemblant à du python étaient géniaux, mais je me suis trompé! En C ++ 0x, les littéraux de chaîne brute sont incroyablement utiles pour la mise en forme du texte. Les langages de balisage peuvent être écrits directement dans votre source!

pour le moment, j'ai beaucoup aimé C ++ 0x avec lequel j'ai joué:

  • nullptr
  • static_assert
  • lambdas
  • shared_ptr et faible_ptr
  • unique_ptr
  • decltype et auto

Je n'ai pas essayé <regexp> ... Je pensais que c'était une idée énorme ... mais je n'ai même pas pris le temps de l'examiner.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top