The C/C++ rules on semicolons in statements (not declarations) are a bit odd in contrast to other languages like Pascal, where semicolons are required only between statements in a compound statement (I am using C syntax to show this):
{S1;S2;...;Sn}
But, it also mean that a semicolon is not used before "else" (we could look into this as well, whether it is viable option):
if (a>b) then x=a else x = b
But, in C/C++, there is the ugly switch statement, where semicolons are probably required as well.
In addition, in some languages, the value {S1;S2;...;Sn} is the value of Sn if it is the last executed statement/expression; otherwise it is the value of the expression in the return statement.
All this can probably be implemented in C++, but all the syntactic ambiguities should be carefully examined.
An then we will be able to write
[&y](int x) { y += x; x }