WG21/N3691 5.1.2 3 The type of the lambda-expression (which is also the type of the closure object) is a unique, unnamed nonunion class type — called the closure type — whose properties are described below. This class type is not an aggregate (8.5.1). The closure type is declared in the smallest block scope, class scope, or namespace scope that contains the corresponding lambda-expression. [ Note: This determines the set of namespaces and classes associated with the closure type (3.4.2). The parameter types of a lambda-declarator do not affect these associated namespaces and classes. —end note ] An implementation may define the closure type differently from what is described below provided this does not alter the observable behavior of the program other than by changing: — the size and/or alignment of the closure type, — whether the closure type is trivially copyable (Clause 9), — whether the closure type is a standard-layout class (Clause 9), or — whether the closure type is a POD class (Clause 9). An implementation shall not add members of rvalue reference type to the closure type.