So far we've got the following cases where a semicolon is required to avoid ambiguity:
- Post increment and pre-increment.
- End of a struct, union or enum declaration.
- Empty statements.
Are there any others?
One could argue that these three situations could easily be redesigned. For example, by introducting a keyword for empty statements (this would improve clarity and readability anyway) and using a different sequence for the post and pre inc/decrement operators.