C++ Lambda (cont)


Lambda expressions (since C++11)

Constructs a closure (an unnamed function object capable of capturing variables in scope).

Syntax

Lambda expressions without an explicit template parameter list (possibly non-generic)
 
[captures ] front-attr (optional) (params ) specs (optional) except (optional)
back-attr (optional) trailing (optional) requires (optional) contract-specs (optional) { body }
(1)  
 
[captures ] { body } (2) (until C++23)
 
[captures ] front-attr (optional) trailing (optional) contract-specs (optional) { body } (2) (since C++23)
 
[captures ] front-attr (optional) except
back-attr (optional) trailing (optional) contract-specs (optional) { body }
(3) (since C++23)
 
[captures ] front-attr (optional) specs except (optional)
back-attr (optional) trailing (optional) contract-specs (optional) { body }
(4) (since C++23)
 
Lambda expressions with an explicit template parameter list (always generic) (since C++20)
 
[captures ] <tparams > t-requires (optional)
front-attr (optional) (params ) specs (optional) except (optional)
back-attr (optional) trailing (optional) requires (optional) contract-specs (optional) { body }
(1)  
 
[captures ] <tparams > t-requires (optional) { body } (2) (until C++23)
 
[captures ] <tparams > t-requires (optional)
front-attr (optional) trailing (optional) contract-specs (optional) { body }
(2) (since C++23)
 
[captures ] <tparams > t-requires (optional) front-attr (optional) except
back-attr (optional) trailing (optional) contract-specs (optional) { body }
(3) (since C++23)
 
[captures ] <tparams > t-requires (optional) front-attr (optional) specs except (optional)
back-attr (optional) trailing (optional) contract-specs (optional) { body }
(4) (since C++23)