Avatar ·

Qu'est-ce qu'une expression lambda en C++ et quand doit-on l'utiliser ?

Bonjour, collègues ! J'ai commencé à étudier C++11 et je tombe constamment sur le terme "expression lambda" (lambda expression). J'ai lu la documentation, mais je ne comprends pas encore complètement ce que c'est et, surtout, à quoi ça sert. Voici un exemple que j'ai trouvé dans un tutoriel :
#include <iostream>
#include <vector>
#include <algorithm>

int main() {
    std::vector<int> numbers = {1, 2, 3, 4, 5};
    int multiplier = 3;

    // Que se passe-t-il ici ?
    std::for_each(numbers.begin(), numbers.end(), [multiplier](int n) {
        std::cout << n * multiplier << " ";
    });
    return 0;
}
Je comprends que `std::for_each` applique une fonction à chaque élément, mais la construction `[multiplier](int n) { ... }` me trouble. Pourquoi ne peut-on pas simplement écrire