【发布时间】:2019-12-07 04:44:32
【问题描述】:
我正在尝试使用 VS2017 编译以下 sn-p,但它会抛出一个 error C2131: expression did not evaluate to a constant,而输出日志中没有任何进一步的详细信息。
class Example
{
public:
constexpr Example() : m_int()
{
for (int i = 0; i < 256; ++i)
{
for (int j = 0; j < 256; ++j)
{
m_int[i] = i;
}
}
}
private:
int m_int[256];
};
int main()
{
constexpr Example vv; // <-- error C2131 here
return 0;
}
但是由于某些我不知道的原因,如果我将 j 计数器停在 < 255(而不是 256),代码编译得很好。
这背后的解释是什么,我该如何解决?
【问题讨论】:
-
看不到任何明显的错误,所以这看起来像一个编译器错误。 gcc 编译上面没有任何问题。
-
用MSVC编译很好
-
我刚刚找到解决方案,我会马上发布答案,谢谢!
-
内循环有什么作用?它只是一遍又一遍地分配给同一个元素。
标签: c++ visual-c++