Writing a recursive lambda
Lambdas are basically unnamed function objects, which means that it should be possible to call them recursively. Indeed, they can be called recursively; however, the mechanism for doing it is not obvious, as it requires assigning the lambda to a function wrapper and capturing the wrapper by reference. Though it can be argued that a recursive lambda does not really make sense and a function is probably a better design choice, in this recipe we will look at how to write a recursive lambda.
Getting ready
To demonstrate how to write a recursive lambda, we will consider the well-known example of the Fibonacci function. This is usually implemented recursively in C++, as follows:
constexpr int fib(int const n) { return n <= 2 ? 1 : fib(n - 1) + fib(n - 2); }
How to do it...
In order to write a recursive lambda function, you must perform the following:
- Define the lambda in a function scope.
- Assign the lambda to an
std::function
wrapper. - Capture the
std...