【发布时间】:2021-04-30 10:22:11
【问题描述】:
令我惊讶的是compiles fine:
int main()
{
constexpr int x = 1 + + + + + + 2;
static_assert(x==3);
}
我知道 C++ 有奇怪的复杂语法(它试图让所有 C 代码都有效),所以我认为这就是允许这样做的原因,但是有什么好的积极理由可以说明我们不想要这段代码被禁了?
编辑:更离奇的案例工作:
int main()
{
constexpr int x = 1 + - - + + + 2;
static_assert(x==3);
}
【问题讨论】:
-
为什么禁止它,也许是一个更好的问题(不是 DVer)
-
@underscore_d 起初我以为你是说你不是:David Vandevoorde :) 至于否决票:我认为问题很好,只是不是很有用,它更像是一种语言琐事,而不是在日常工作中需要了解的有用信息。
标签: c++ language-lawyer grammar