我在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
为int
时,代码编译正常。答案 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编译器在与模板代码一起使用时会崩溃。