clang 拒绝 gcc 允许的这段代码:
int main() {
static constexpr const void *vp = nullptr;
static constexpr const char *cp = static_cast<const char*>(vp);
}
具有以下内容:
error: constexpr variable 'cp' must be initialized by a constant expression
static constexpr const char *cp = static_cast<const char*>(vp);
阅读最终列表后N3797 https://isocpp.org/files/papers/N3797.pdf5.9/2 我没有看到任何禁止的内容static_cast
在常量表达式中的使用。我是不是看错地方了或者误读了什么?或者我应该针对 clang 打开一个错误?
好吧,C++14 标准(以及您的(非最终)草案!)要求这样做
A 条件表达式 e
是一个核心常量表达式,除非
的评价e
,遵循抽象机的规则
(1.9),将计算以下表达式之一:
— 类型的转换cv void *
指向对象的指针类型;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)