Du point de vue du code utilisateur, on peut alors passer n'importe quel callable - fonction, objet fonction, lambda, ... C'est probablement ce qui fait la beauté de la chose.
1 2 3 4 5
| template <class _Callable>
int f(_Callable arg)
{
return arg();
} |
Ce code prends n'importe quoi qui accepte la syntaxe d'appel d'une fonction sans argument, y compris boost::function si je ne m'abuse (mais pour être tout à fait franc, boost m'agace au plus haut point et je ne l'utilise pas ; donc j'en sais trop peu pour pouvoir me prononcer avec exactitude, et je suis trop fainéant pour faire la recherche qui s'impose

)
Partager