刚刚安装了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
出现问题?
我很惊讶这个基本可能出现的回归,我怀疑我的代码肯定有问题......