Tests & Snippets
|
[&]
pour capturer toutes les variables par référence ;[=]
pour capturer toutes les variables par copie ;[var1, var2]
pour capturer des variables spécifiques par copie ;[&var1, &var2]
pour capturer des variables spécifiques par référence;[v = expr]
pour faire une "init capture", c'est-à-dire créer une nouvelle variable valable dans le corps de l'expression.() -> int
pour spécifier le type de retour de la lambda expression ;() const
pour rendre la lambda expression constante ;() noexcept
pour spécifier que la lambda expression ne lance pas d'exception ;() -> int const &
pour spécifier le type de retour de la lambda expression comme une référence constante.()
pour spécifier une lambda expression qui ne prend aucun argument ;(int x, double y)
pour spécifier une lambda expression qui prend deux arguments, un int nommé x et un double nommé y.Note: Les crochets peuvent être laissés vides si aucun comportement spécial n'est requis.
Dans les crochets, il est possible de créer une nouvelle variable utilisable dans le corps de l'expression. Modifier les variables externes après la déclaration ne sert à rien, la variable est évaluée à la définition.
Grace aux λ-expressions, on peut remplacer la première ligne par la seconde, qui est nettement plus lisible. Il est même possible de donner directement le corps dans l'appel de la fonction dans ce cas.