In a nutshell, the lambda function capability enables programmers to pass functions to regular functions, just as easily as a variable is passed.
Let's compare passing a lambda function to an algorithm with passing a variable:
// Prerequisite auto vals = std::vector<int>{1, 3, 2, 5, 4}; // Look for number three auto three = 3; auto num_threes = std::count(vals.begin(), vals.end(), three); // num_threes is 1 // Look for a numbers which is larger than three auto is_above_3 = [](int v){ return v > 3; }; auto num_above_3 = std::count_if(vals.begin(), vals.end(), is_above_3); // num_above_3 is 2
Notice how we pass a variable to search for with std::count() in the first case, and a function to search for with ...