Sne*_*tel 22 c++ goto language-lawyer constexpr c++14
C++ 14规定了constexpr函数中可以做什么和不可以做什么.其中一些(不asm,没有静态变量)似乎很合理.但该标准也不允许goto在constexpr功能,尽管它允许其他控制流机制.
这种区别背后的原因是什么?
我以为我们过去了" goto很难编译 ".
Bar*_*rry 16
我的理解是希望constexpr在C++ 14中获得轻松的语义.放松的许多限制很简单,但有些更具争议性或难度,或者[插入你选择的形容词].决定只发布主要变化并推迟其余部分,而不是constexpr仅仅因为使用能力而放松goto.这似乎是一个非常合理的选择,因为constexpr在C++ 14中,它比constexprC++ 11 强大得多,并且不能使用goto是一个相当小的缺席,所有事情都考虑在内.
也就是说,当然存在这样的观点,即goto在constexpr上下文中既有用也有可能.事实上,最初的放松建议constexpr允许它.所以可能只需要有人想要写一个提议来添加它.有人可能是你!两年前在N4472中显然是Ville Voutilainen ,其中包含与以下问题相关的非常相关的段落:
有一个未经证实的传闻,根据这个传闻,在常量表达式中禁止goto更多是出于品味原因而不是技术原因,这意味着在常量表达式中支持goto并不是特别难以实现.我不能说这对于一般的实现是否正确.
这篇文章有不同的接受,但现在我们有了constexpr lambdas,也许需要重新审视.而那人可能就是你!