Back to Developer Roadmap

Lambda Functions in C++

src/data/roadmaps/cpp/content/[email protected]

4.02.2 KB
Original Source

Lambda Functions in C++

A lambda function, or simply "lambda", is an anonymous (unnamed) function that is defined in place, within your source code, and with a concise syntax. Lambda functions were introduced in C++11 and have since become a widely used feature, especially in combination with the Standard Library algorithms.

Syntax

Here is a basic syntax of a lambda function in C++:

[capture-list](parameters) -> return_type {
    // function body
};
  • capture-list: A list of variables from the surrounding scope that the lambda function can access.
  • parameters: The list of input parameters, just like in a regular function. Optional.
  • return_type: The type of the value that the lambda function will return. This part is optional, and the compiler can deduce it in many cases.
  • function body: The code that defines the operation of the lambda function.

Usage Examples

Here are a few examples to demonstrate the use of lambda functions in C++:

Lambda function with no capture, parameters, or return type.

auto printHello = []() {
    std::cout << "Hello, World!\n";
};
printHello(); // Output: Hello, World!

Lambda function with parameters.

auto add = [](int a, int b) {
    return a + b;
};
int result = add(3, 4); // result = 7

Lambda function with capture-by-value.

int multiplier = 3;
auto times = [multiplier](int a) {
    return a * multiplier;
};
int result = times(5); // result = 15

Lambda function with capture-by-reference.

int expiresInDays = 45;
auto updateDays = [&expiresInDays](int newDays) {
    expiresInDays = newDays;
};
updateDays(30); // expiresInDays = 30

Note that, when using the capture by reference, any change made to the captured variable inside the lambda function will affect its value in the surrounding scope.

Visit the following resources to learn more: