Unfortunately, this is not easy to read. You are misreading the second case of the for
statement. The first semicolon is an integral part of declaration
and thus hidden to your eyes. You can easily check such syntax questions by looking into Annex A. There you have:
(6.7) declaration:
declaration-specifiers init-declarator-listopt ;
static_assert-declaration