According to the C11 standard, _Static_assert should be allowed as clause-1 in a for loop.
For example:
for (_Static_assert(1, "1 is nonzero");;) {}
The relevant section of the C11 grammar is:
for ( declaration expressionopt ; expressionopt ) statement
declaration:
declaration-specifiers init-declarator-listopt ;
static_assert-declaration
It is not allowed in C++11, where the for statement has the form:
for ( for-init-statement conditionopt; expressionopt) statement
and for-init-statement can only be an expression-statement or a simple-declaration, not a static_assert-declaration