N
Size: a a a
АК
std::string_view(a) == std::string_view(b)
AB
PK
АК
PK
АР
O
The closure type is declared in the smallest block scope, class scope, or namespace scope that contains the corresponding lambda-expression
...
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, or
- whether the closure type is a standard-layout class
Если я правильно понимаю, некомпилируемость изначального примера тоже не гарантируется стандартом, это просто следствие самой очевидной реализации