0

我在 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_Ty当is时,代码编译得很好int
4

2 回答 2

4

内部编译器错误ICE始终错误。

请通过 Microsoft Connect 报告。


有问题的代码,

e_Ty *d(new e_Ty[l]);

可能正确也可能不正确,具体取决于l是否包含了适当的标题等等。上下文太少可说。e_Tyas a std::pairof references 无效,因为需要初始化引用,如TC 所述。但这对于 ICE 来说并不重要。

于 2016-06-02T21:40:58.423 回答
0

是否与: C++11 constexpr 导致编译器内部错误(C1001)有关,值得一看

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

于 2018-06-12T12:32:43.193 回答