template<classT>Ttwice(constT&x,T(*f)(constT&)){returnf(x)+f(x);}template<classT>Tsquare(constT&x){returnx*x;}intmain(){twice(5,square);// Évalué à 50twice(5.0,square);// Évalué à 50.0return0;}
Je n’ai pas essayé à faire une lambda template. Les objets de type T pouvant devenir gros, j’ai décidé de passer les paramètres par référence, pour préciser au compilateur que l’objet ne serait pas modifié, j’ai ajouté const. Ce que je n’ai pas fait sur le premier exemple avec des paramètres par copie.
[^] # Re: simple ?
Posté par Anthony Jaguenaud . En réponse au journal Rust en version 0.12. Évalué à 2.
J’ai bien aimé la blague ;-) donc en C++ :
Avec des types génériques :
Je n’ai pas essayé à faire une lambda template. Les objets de type T pouvant devenir gros, j’ai décidé de passer les paramètres par référence, pour préciser au compilateur que l’objet ne serait pas modifié, j’ai ajouté const. Ce que je n’ai pas fait sur le premier exemple avec des paramètres par copie.