错误C1001:编译器中发生内部错误

时间:2016-06-02 21:38:20

标签: c++ templates visual-c++ visual-studio-2015 visual-c++-2015

我在C ++模板化任务中有一个虚函数,当它在Visual Studio 2015中编译时(我已经尝试过Debug / Release和x86 / x64的所有组合),它始终在下一行中出现编译错误C1001代码:

e_Ty *d(new e_Ty[l]);

其中e_Ty是类的模板参数。仅当我使用e_Ty设置为std::pair<const int &, int &>的模板类时,才会出现此错误。是否有正当理由不适用,或者这是MSVC中的错误?

<小时/> 的修改

注意:

  • l是一个局部变量,它是提前声明的(并且作为函数调用的结果赋值)。
  • 我尝试使用禁用优化,使用auto,并使用赋值式初始化,但没有一个有效。
  • e_Tyint时,代码编译正常。

2 个答案:

答案 0 :(得分:4)

内部编译器错误, ICE 总是一个错误。

请通过Microsoft Connect报告。

有问题的代码,

e_Ty *d(new e_Ty[l]);

... 可能正确也可能不正确,具体取决于l,是否包含了适当的标头,等等。上下文的内容太少了。e_Ty的{​​{1}}引用无效,因为引用需要初始化为noted by T.C.。但这对于ICE来说并不重要。

答案 1 :(得分:0)

值得看看它是否与以下内容有关: C++11 constexpr causes compiler's internal error (C1001)

如果涉及constexpr,则报告VS2015和VS2017编译器在与模板代码一起使用时会崩溃。