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

时间:2017-03-21 01:58:59

标签: 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, "!!");

在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)})'

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

1 个答案:

答案 0 :(得分:0)

  

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

此问题是reported,因为是Visual Studio 2017 15.1版中的错误。
OP(?)先前报告了另一个issue的变体。

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