[c++] Generic lambdas

In C++, generic lambdas allow us to write generic code that can be used with different types. This is achieved by using the auto keyword for the function parameters.

What are Lambdas?

Lambdas are anonymous functions that can be defined inline. They are particularly useful when we need a simple function for a short period of time, such as when using algorithms like std::transform or std::for_each.

auto lambda = [](int x, int y) { return x + y; };
std::cout << lambda(3, 4) << std::endl;  // Output: 7

Generic Lambdas

Prior to C++14, lambdas required specifying the type of their arguments explicitly. With C++14, generic lambdas allow us to write code that works with any type, without explicitly declaring the type of arguments.

auto add = [](auto x, auto y) { return x + y; };
std::cout << add(3, 4) << std::endl;   // Output: 7
std::cout << add(3.5, 4.7) << std::endl;  // Output: 8.2

In this example, the add lambda can accept arguments of any type that supports the + operator. This makes the code more flexible and reusable.


Generic lambdas in C++ make it easier to write generic code and increase the flexibility and reusability of the code. With this feature, we can create functions that operate on a wide range of types without having to specify the types explicitly.

By using generic lambdas, we can write more concise and readable code that adapts to different data types, making our code more versatile and easier to maintain.