问题描述
注意:关于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 (将#修改为@)