We will cover the following recipes in this chapter:
- Defining functions on the run using lambda expressions
- Adding polymorphy by wrapping lambdas into std::function
- Composing functions by concatenation
- Creating complex predicates with logical conjunction
- Calling multiple functions with the same input
- Implementing transform_if using std::accumulate and lambdas
- Generating cartesian product pairs of any input at compile time