• [^] # Re: À suivre?

    Posté par . En réponse au journal C++ Core Guidelines. Évalué à 4.

    C'est quoi les arguments en faveur des lambda ?

    ça t'évite de devoir faire des bind ou autre truc chiants lorsque tu rédige ta fonction, tu peux capturer les membres locaux par référence (ou copie)...

    Lorsque dans ton projet tu te retrouves avec 50 fonctions de tri/tests avec des bind pour gérer les conditions ( bon dans certains cas y a juste des objets de tests avec l'operator() défini, et les membres qui vont bien), mais les lamdas donnent une certaine souplesse lors de la rédaction.

    Un autre intérêt des lambdas est lorsqu'on veux exécuter du code en fin de bloc, quel que soit le chemin utilisé (exception, return, fin de scope)... l'équivalent du finally en java.
    Soit tu mets ton code (ou ta fonction avec toutes les références nécessaires) et tu l'appelle partout où tu risque de sortir (avec des try{}/catch()), en espérant ne pas en avoir loupé, soit tu fais un bête

    auto cleanup = finally([&]{ free(bidule); });

    Note bien, c'est juste un exemple, ça peut être n'importe quoi.

    Il ne faut pas décorner les boeufs avant d'avoir semé le vent