• [^] # Re: simple ?

    Posté par . En réponse au journal Rust en version 0.12. Évalué à 4. Dernière modification le 14 octobre 2014 à 18:47.

    En C++ n’aime pas trop les pointeurs, moins les pointeurs de fonctions, et encore moins les casts d’une fermeture vers un pointeur. On aurait pu mettre :

    auto square = [](auto x) { return x * x; };
    auto twice = [](auto x, auto f) { return f(x) + f(x); };
    

    Ça marche avec des int et des double, mais aussi avec des foncteurs, sans perdre le type. Des const& ou des références universelles peuvent être rajoutés, au besoin. Mais c’est vrai qu’une traduction littérale aurait été plus proche de:

    template <typename Func>
    auto twice2(int x, Func f)
    {
    return f(x) + f(x);
    }
    Ou, à la rigeur, d’un paramètre std::function.