将VS 2012迁移到VS 2015后,C ++项目中的Xmemory错误

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将VS 2012迁移到VS 2015后,C ++项目中的Xmemory错误相关的知识,希望对你有一定的参考价值。

我的项目在Visual Studio 2012中正常工作和编译。但是我试图在VS 2015的计算机上打开它,我得到156个错误。所有相同和全部在同一个文件中并且相同的3行:严重性代码描述项目文件行抑制状态

Error   C2338   The C++ Standard forbids containers of const elements because allocator<const T> is ill-formed. leaf    c:program files (x86)microsoft visual studio 14.0vcincludexmemory0 585 

Error   C2535   'const long *std::allocator<_Ty>::address(const long &) noexcept const': member function already defined or declared    leaf    c:program files (x86)microsoft visual studio 14.0vcincludexmemory0 613 

Error   C2535   'const long *std::_Wrap_alloc<std::allocator<_Ty>>::address(const long &) const': member function already defined or declared   leaf    c:program files (x86)microsoft visual studio 14.0vcincludexmemory0 846 

我只获得了相同的3个错误,共52次,总共156次。我的代码没有出现任何错误,都是这个xmemory0文件。

答案

我假设您正在尝试使用带有consts的STL容器?这是C ++标准禁止的,但早期版本的Visual C ++允许这样做。新的编译器在这方面更符合标准,并且会像您的一样产生错误。

有关Visual Studio Connect的更多信息

可以在文件中为“<const”做一个简单的查找,以检查整个源代码中是否有类似的内容。

以上是关于将VS 2012迁移到VS 2015后,C ++项目中的Xmemory错误的主要内容,如果未能解决你的问题,请参考以下文章

如何将 VC++6.0 项目升级到 VS2010?

禁用菜单项时,如何将 VS Profiler 2012 附加到 ASP.NET 解决方案?

如何使用vs2012编写c语言

win10vs2015安装文件无法启动

vs2012已附加有调试器,但是没有将该调试器配置为调试此未经处理的异常

如何用VS2015建立C/C++程序