In that case, the return type is deduced from return statements
as described in [dcl.spec.auto].
— end note]
[Example 3: auto x1 =[](int i){return i; }; / OK, return type is intauto x2 =[]{return{1, 2}; }; / error: deducing return type from braced-init-listint j;
auto x3 =[&]()->auto&{return j; }; / OK, return type is int& — end example]
[Example 4: auto x =[](int i, auto a){return i; }; / OK, a generic lambdaauto y =[](thisauto self, int i){return i; }; / OK, a generic lambdaauto z =[]<class T>(int i){return i; }; / OK, a generic lambda — end example]