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