【发布时间】:2015-10-16 00:44:28
【问题描述】:
在 [dcl.constexpr]/3 (http://eel.is/c++draft/dcl.constexpr#3) 中,“或不包含的复合语句”中的包含是什么意思? p>
例如:
constexpr int f(bool b) {
return b ? ([]() { goto x; x: return 1; })() : 2;
}
int main() {}
构成f:s 正文的复合语句不包含goto 语句吗?
对于该示例,我没有收到来自 Clang 或 GCC 的错误消息。
【问题讨论】:
-
@T.C.那么
constexpr int f() { { goto lbl; } lbl: return 7; }可以吗?我测试的任何编译器都不接受它。 -
constexpr int f() { { goto lbl; } lbl:返回 7; } 不好,包含它们似乎甚至是间接的。在我的例子中,这似乎过于间接了。
-
是的,看起来确实不太好,这就是我的观点:简单的答案(它的意思是“直接包含”)似乎不正确,所以你的问题仍然存在。啊,我刚刚看到你自己在
std-discussion上提出了这个问题。看来我们达成了一致。
标签: c++ lambda language-lawyer c++14 constexpr