static_casting的结果是constexpr void*一个常量表达式吗?

Rya*_*ing 4 c++ clang language-lawyer constexpr c++14

clang拒绝了gcc允许的代码:

int main() {
    static constexpr const void *vp = nullptr;
    static constexpr const char *cp = static_cast<const char*>(vp);
}
Run Code Online (Sandbox Code Playgroud)

具有以下内容:

error: constexpr variable 'cp' must be initialized by a constant expression
  static constexpr const char *cp = static_cast<const char*>(vp);
Run Code Online (Sandbox Code Playgroud)

在阅读N3797 5.9/2中的最终列表后,我没有看到任何禁止static_cast在常量表达中使用的内容.我是在寻找错误的地方还是误读了什么?或者我应该打开一个反对clang的bug?

Col*_*mbo 7

好吧,C++ 14标准(以及你的(非最终)草案!)要求这样做

甲条件表达式 e是一个核心常量表达式除非的评价e,如下所述抽象机(1.9),将评估下面的表达式中的一个的规则:

- 从类型cv void *到指向对象类型的转换;