constexpr错误; VS2017 C++编译回归?

Man*_*ans 9 c++ visual-c++ c++14 visual-c++-2017

刚刚安装了VS2017,声称自2015年以来拥有出色的C++ 14支持(这是初步的).给我的一个项目使用了一个旋转constexpr,并注意到似乎是一些回归.

这段代码:

struct s
{
    size_t i;
    constexpr s(nullptr_t) noexcept : i(0) {}
};
static_assert(s(nullptr).i == 0, "!!");
Run Code Online (Sandbox Code Playgroud)

在VS2015和Clang上编译没问题,但我在VS2017中遇到一个新错误:

error C2131: expression did not evaluate to a constant
note: failure was caused by unevaluable pointer value
note: while evaluating 's::s(&s{(null)})'
Run Code Online (Sandbox Code Playgroud)

这段代码看起来不错吧?是否constexpr有问题nullptr
我很惊讶这个基本可能出现的回归,我怀疑我的代码一定有问题......

P.W*_*P.W 1

constexpr 构造函数(std::nullptr_t)导致“错误 C2131:表达式未计算为常量”

此问题已报告为 Visual Studio 2017 版本 15.1 中的错误。OP 之前报告的另一个问题
有一个变体(?)。

此问题已在以下版本中修复:Visual Studio 2017 版本 15.6 Preview 1