Lambdas, uses and abuses

Speaker: Dawid Zalewski

Audience level: Intermediate | Advanced

Lambdas are the powerhouse of modern C++. It's hard to imagine applying a standard algorithm without writing a lambda expression. Sadly, despite their versatility, that's also where lambdas end up most of the time. Yet, there is so much more.
This talk is about discovering the hidden potential of lambda expressions. After going through a range of common, unusual, and often unexpected usage patterns of lambdas you'll be better equipped to apply them in your projects.

We'll start with a review of the lambda syntax, including the newest C++20 additions. While doing so, we'll identify the opportunities for using lambdas to simplify existing code. This will be followed by more advanced topics including immediately invoked lambda expressions or lambdas that return lambdas to achieve levels of indirection previously available only to fully fledged classes. Finally, we'll explore the fascinating technique of inheriting from lambdas and demonstrate how it enables powerful abstractions (composition, recursion, partial application) that make applying design patterns like the chain of responsibility with lambdas trivial.