// or shorter in case of automatic return type deduction
[captures...](<aprgs>...){return...;};
// or shorter in case of empty parameter list
[captures...]{return...;};
```
Without the "capture" clause, it looks like a regular function definition
- The `captures...` is a list of zero or more variables or references that can be used inside the function
-`<args>...` is a list of function parameters including its types and qualifiers
-`<return_type>` is the (optional) (trailing) return type of the function. Can be omitted if return type can be deduced automatically from return statement.
- The function body may contain any sequence of valid c++ statements and (optionally) return statement(s).
---
# Lambda Expressions
## Example - Accumulate using Lambda Expression
As in the previous accumulate example, we pass a functor to the function. A lambda expression is a special
type of functor, thus can be directly passed without changing the function signature