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

Error C1001: An internal error has occurred in the compiler

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

e_Ty *d(new e_Ty[l]);

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


编辑

备注:

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

请通过 Microsoft Connect 报告。


有问题的代码,

e_Ty *d(new e_Ty[l]);

可能正确也可能不正确,这取决于 l、是否包含适当的 headers,等等。上下文太少了,对于e_Ty作为一个std::pair的引用是无效的,因为引用需要初始化,如noted by T.C.。但这对 ICE 来说并不重要。

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

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