cig*_*ien 5 c++ language-lawyer constexpr
这个程序:
constexpr void f() { x: ; }
Run Code Online (Sandbox Code Playgroud)
由 gcc 编译,但 clang 说:
error: statement not allowed in constexpr function
Run Code Online (Sandbox Code Playgroud)
那么这个代码有效吗?
正如Nathan Pierson在评论中指出的那样,Clang 是正确的,并且代码格式错误。根据当前的工作草案(包括 C++20),dcl.constexpr#3说:
constexpr 函数的定义应满足以下要求:
...
其功能体不得包含
...
标识符标签,
...
...