错误 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 中的错误?
编辑
备注:
l
是提前声明的局部变量(并作为函数调用的结果赋值)。
- 我尝试过使用禁用优化、使用
auto
和使用赋值式初始化,其中 none 有效。
- 当
e_Ty
为 int
时代码编译正常。
一个内部编译器错误,一个 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 编译器在与模板代码一起使用时会崩溃。
我在 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 中的错误?
编辑
备注:
l
是提前声明的局部变量(并作为函数调用的结果赋值)。- 我尝试过使用禁用优化、使用
auto
和使用赋值式初始化,其中 none 有效。 - 当
e_Ty
为int
时代码编译正常。
一个内部编译器错误,一个 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 编译器在与模板代码一起使用时会崩溃。