9

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

4

1 回答 1

0

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

此问题已报告为 Visual Studio 2017 版本 15.1 中的错误。OP(?)早些时候报告
了另一个问题的变体。

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

于 2018-10-12T07:09:57.147 回答