8 votes

Projets de bibliothèques pour C++0x ?

Ces derniers temps, j'ai été très enthousiasmé par la prise en charge des lambdas dans VC2010. Je commence lentement à saisir tout le potentiel de cette fonctionnalité pour transformer le C++ en quelque chose de bien meilleur.

Mais j'ai ensuite réalisé que ce potentiel dépendait grandement de la prise en charge des lambdas dans les bibliothèques courantes comme boost et QT.
Quelqu'un sait-il s'il est prévu d'étendre ces bibliothèques avec les nouvelles fonctionnalités de C++0x ?

Les lambdas remplacent pratiquement le besoin de boost::lambda et tout ce qui interagit avec lui dans boost. QT pourrait ajouter la prise en charge des lambdas dans tous ses conteneurs et peut-être même comme une manière alternative de définir SLOT s

6voto

Daniel Earwicker Points 63298

Les lambdas s'intègrent déjà très bien dans les bibliothèques existantes - partout où une fonction accepte un objet fonction d'un type donné par un paramètre de modèle.

C'est d'ailleurs l'un des aspects les plus intéressants de ce système : il s'agit d'un exemple classique d'une fonctionnalité du langage qui codifie une pratique existante dans une syntaxe astucieuse.

Évidemment, la bibliothèque lambda boost devient redondante, mais cela signifie qu'il n'est pas nécessaire de lui ajouter de nouvelles fonctionnalités.

4voto

sbi Points 100828

Je ne vois pas comment l'utilisation de lambda dépend du support des bibliothèques. Les lambdas éliminent le besoin de créer de nombreuses classes juste pour envelopper différents petits algorithmes et s'intègrent parfaitement aux autres fonctionnalités du langage/de la bibliothèque ( std::function me vient à l'esprit). Partout où vous aviez l'habitude de passer un objet de fonction ou un pointeur de fonction, les lambdas peuvent également être utilisés.

Ils ajoutent donc principalement une autre alternative pour l'utilisation du code et des bibliothèques existants. La seule façon que je vois pour les bibliothèques de mieux supporter les lambdas est d'utiliser des approches plus fonctionnelles.

3voto

nos Points 102226

Il y a de fortes chances que ces bibliothèques attendent que les compilateurs supportent correctement les fonctionnalités C++0x pertinentes et ne s'en préoccupent pas tant que les compilateurs grand public ne les supportent pas. Ne retenez pas votre souffle.

1voto

nonchalant Points 788

Ce n'est PAS vrai, vous ne pouvez pas remplacer boost::lambda par C++0x lambda. Voir aquí pour certaines raisons (à propos de boost bind, mais je pense que la plupart des transferts)

Aussi, @daniel ce pourrait vous aider à commencer à utiliser les fonctions lambda/boost bind pour les slots. Cela me rend la vie incroyablement facile.

De plus, @litb, d'après mes sources, les lambdas ne seront pas modifiés (argh).

0voto

Zifre Points 14109

La plupart des bibliothèques utilisent des pointeurs de fonction standard pour les rappels. Les lambdas C++0x peuvent être utilisés comme pointeurs de fonction, donc la plupart des bibliothèques n'ont pas besoin d'être modifiées. D'autres bibliothèques utilisent des modèles afin de pouvoir prendre n'importe quel objet appelable (ex. std::foreach n'aurait pas besoin d'être modifié).

La seule autre caractéristique de C++0x à laquelle je pense et que les bibliothèques pourraient adopter est l'utilisation de caractères fortement typés. enums . De plus, les bibliothèques pourraient commencer à utiliser extern pour réduire les temps de compilation.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X