VS2019最新更新:constexpr:FIXED字符串数组“表达式未求值为常数”

问题描述

注意:关于Stack Overflow的标题看起来很相似的问题很多,但是我发现没有一个实际上是重复的,恕我直言。 >

多年来,我一直在我的项目中使用以下代码,没有问题。但是,自从Visual Studio 2019的最新更新(16.7.2-尽管可能的版本为16.7.1)以来, MSVC 编译器已开始生成显示错误(我的编译“标准”设置为C ++ 17)。

#include <iostream>

class Foo {
public:
    Foo() { }
    static constexpr char Letters[6][10] = { "Alpha","Bravo","Charlie","Delta","Echo","Foxtrot" };
};

int main()
{
    Foo f;
    for (int i = 0; i < 6; ++i) std::cout << f.Letters[i] << std::endl;
    return 0;
}

错误(在constexpr行的大括号处)

错误C2131:表达式的计算结果不为常量
消息: 失败是由于读取未初始化的符号引起的

clang-cl 编译器将继续接受代码,而不会发出任何警告。

对于此问题,我有一个相当“微不足道的”解决方法,如下所示:

class Foo {
public:
    Foo() { }
    inline static const char Letters[6][10] = { "Alpha","Foxtrot" };
};

但是,我对错误报告很感兴趣。是否有我缺少的东西(已经丢失了约5年),或者这是最新版本的MSVC中的错误吗?如果是前者,我的错误或无效假设是什么?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)