constexpr 函数可以包含标签吗?

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)

那么这个代码有效吗?

cig*_*ien 7

正如Nathan Pierson评论中指出的那样,Clang 是正确的,并且代码格式错误。根据当前的工作草案(包括 C++20),dcl.constexpr#3说:

constexpr 函数的定义应满足以下要求:

...

其功能体不得包含

...

标识符标签,

...

...