【问题标题】:Internal compiler error (CL version: 14.27.29110)内部编译器错误(CL 版本:14.27.29110)
【发布时间】:2021-01-18 04:29:18
【问题描述】:

有代码

#include <array>

struct Foo {
  int bar;
};

int main() {
  constexpr auto v = std::array{Foo{}};
  return 0;
}

使用 C++17 编译时:

致命错误 C1001:内部编译器错误。 ...(编译器文件“msc1.cpp”,第 1591 行) “C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.27.29110\bin\HostX86\x86\CL.exe”中的内部编译器错误

但这 - 编译

#include <array>

struct Foo {
  int bar;
};

int main() {
  constexpr std::array<Foo, 1> v{Foo{}};
  return 0;
}

按照here 的描述禁用所有优化

这是编译器错误吗?

【问题讨论】:

  • 我会说内部编译器错误始终是一个错误,即使导致它的代码无效。

标签: c++ visual-c++


【解决方案1】:

这看起来与在 developercommunity.visualstudio.com 下的 Regression: c++ internal compiler error in 16.7.0 with /std:c++17 (compiler file 'msc1.cpp', line 1591) 上报告的错误相同。我建议您对该错误报告进行投票,并密切关注它以寻找可能的解决方案。

该问题是在 16.7.0 更新中引入的,自最新的 16.7.5 起尚未修复。临时解决方法是恢复到 16.6.5,或删除 /std:c++17 并改用 /std:default/std:c++14

【讨论】:

  • 也许他们会用clang代替msvc)
  • @АлександрТрушин 这不会发生 ;-) 但我在票证上看到 MS 终于承认了这个错误并承诺修复。
  • @АлександрТрушин 很高兴知道,感谢您的跟进。当修复程序公开发布时,我会更新答案。
猜你喜欢
  • 2020-08-01
  • 2011-08-26
  • 1970-01-01
  • 2010-11-08
  • 1970-01-01
  • 2011-02-20
  • 1970-01-01
  • 2015-05-28
相关资源
最近更新 更多