Posté par neil .
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.
[^] # Re: simple ?
Posté par neil . 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 :
Ça marche avec des
intet desdouble, mais aussi avec des foncteurs, sans perdre le type. Desconst&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:
Ou, à la rigeur, d’un paramètretemplate <typename Func>
auto twice2(int x, Func f)
{
return f(x) + f(x);
}
std::function.