for语句的for-init-statement中的static_assert

rah*_*ma1 7 c++ language-lawyer c++11

是什么阻止编译器从编译static_assert放置在换初始化语句声明?

例如:

for(static_assert(true, ""); false; ); // error
Run Code Online (Sandbox Code Playgroud)

Bar*_*rry 11

在语法上.一个for循环是:

for ( init-statement; conditionopt ; expressionopt ) statement
Run Code Online (Sandbox Code Playgroud)

其中init-statement是一个表达式后跟一个;或一个简单声明.一个static_assert声明既不是那些东西,因此它不能去那里.

  • @ rahnema1 a`static_assert`是*block-declaration*而不是*simple-declaration*. (4认同)
  • @ rahnema1但它不是*简单声明*. (3认同)