首页 > 解决方案 > constexpr 函数可以包含标签吗?

问题描述

这个程序

constexpr void f() { x: ; }

由 gcc 编译,但 clang 说:

error: statement not allowed in constexpr function

那么这段代码有效吗?

标签: c++language-lawyerconstexpr

解决方案


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

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

...

它的功能体不应包含

...

标识符标签,

...

...


推荐阅读