IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Boost C++ Discussion :

boost phoenix vs lambda c1x


Sujet :

Boost C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    688
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 688
    Par défaut boost phoenix vs lambda c1x
    Bonjour,

    Il me semble avoir déjà lu que les lambda de phoenix comporter un avantage par rapport aux lambdas de C1xx..si quelqu'un à l'info..

    Par ailleurs y a t-il une différence à ce que les lambdas expression ne soit pas définit dans le core language? notamment en terme de performance

    Merci

  2. #2
    Membre Expert
    Avatar de Goten
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 580
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 580
    Par défaut
    Il me semble avoir déjà lu que les lambda de phoenix comporter un avantage par rapport aux lambdas de C1xx..si quelqu'un à l'info..
    Elles sont polymorphiques.


    Par ailleurs y a t-il une différence à ce que les lambdas expression ne soit pas définit dans le core language? notamment en terme de performance
    Oui la syntaxe plus légère. Non pour les perfs.

  3. #3
    Membre très actif
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    688
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 688
    Par défaut
    dans quel cas finalement a t-on besoin de lambda polymorphic? si je comprends bien il s'agit de lambda expression qui peuvent être templater ?

    par exemple si on a un boost::any que l'on souhaite le parcourir avec un std::for_each et appliquer la même lambda expression sur chacun de ces éléments, en c++0X on est bloqué ? (sauf à utiliser un void* obv)

  4. #4
    Membre Expert

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2004
    Messages
    1 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 1 391
    Par défaut
    Une fonction lambda polymorphique serait une fonction lambda où l'on a pas besoin de spécifier le type du paramètre, ie où il est déduit automatiquement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    [](int i){return i;} //monomorphic lambda
    [](i){return i;} //polymorphic lambda
    Les raisons du comité de les avoir exclu sont :
    - La peur d'avoir quelque chose d'illisible
    - Complication de vérification du typage (lié au méchanisme qui voulait être mis en place pour les concepts)
    - Donc deux difficultés pour quelque chose que sert assez peu (cf NB)

    Eric Niebler [1] donne un autre argument en faveur des lambda de boost, c'est qu'ils ont une structure d'arbre qui peut être manipulé à la compilation.

    Sources:
    - http://www.open-std.org/jtc1/sc22/wg...2006/n1968.pdf (section 5.1)
    - [1] http://cpp-next.com/archive/2010/10/...sion-part-one/ (encadré latéral)

    NB: Je ne fais que rapporter les éléments d'un document du comité, je n'ai pas utilisé assez les lambda ni ne connait assez bien la théorie qui est dérière pour savoir si ca sert souvent ou pas.

  5. #5
    Membre très actif
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    688
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 688
    Par défaut
    all right thanks

  6. #6
    Membre Expert
    Avatar de Goten
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 580
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 580
    Par défaut
    y'a un patch gcc qui implémente les lambda polymorphiques d'ailleurs.

    Et pour leur utilité, essaye d'utiliser un mpl::for_each avec une lambda

Discussions similaires

  1. Truc bizarre avec Boost.Phoenix
    Par Mat007 dans le forum Boost
    Réponses: 2
    Dernier message: 20/07/2010, 14h57
  2. Pb avec boost::phoenix
    Par Tugdugal dans le forum Boost
    Réponses: 2
    Dernier message: 15/03/2010, 07h52
  3. boost.lambda et comparaison case insensitive
    Par nikko34 dans le forum Boost
    Réponses: 2
    Dernier message: 27/03/2008, 19h23
  4. Utilisation de Boost.Lambda
    Par Biozic dans le forum Boost
    Réponses: 9
    Dernier message: 25/02/2008, 00h10
  5. boost lambda : appels imbriqués
    Par Patriarch24 dans le forum Boost
    Réponses: 3
    Dernier message: 24/09/2007, 15h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo