【发布时间】:2016-06-02 21:38:20
【问题描述】:
我在 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时,代码编译良好。
【问题讨论】:
-
无论如何,这都是格式错误的代码。您究竟如何创建一对引用而不将它们绑定到任何东西?
-
@T.C.:谢谢,我没有注册该类型。相应地修正了我的答案。
-
@T.C.谢谢,我将其更改为使用
std::pair<int, int>并且有效。
标签: c++ templates visual-c++ visual-studio-2015 visual-c++-2015