【问题标题】:Xmemory errors in C++ project after migrating VS 2012 to VS 2015将 VS 2012 迁移到 VS 2015 后 C++ 项目中的 Xmemory 错误
【发布时间】:2016-06-16 08:27:23
【问题描述】:

我的项目在 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.0\vc\include\xmemory0 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.0\vc\include\xmemory0 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.0\vc\include\xmemory0 846 

我只得到同样的 3 个错误 52 次,总共 156 次。我的代码没有一个错误,都是这个 xmemory0 文件。

【问题讨论】:

  • 请多多MCVE
  • 您不是要在 STL 容器中保存对某些内容的引用吗?还是常量? connect.microsoft.com/VisualStudio/feedbackdetail/view/949932/…
  • @SamiKuhmonen 似乎已经解决了这个问题,但如果有人知道任何方法来跟踪这些问题的根源,我将不胜感激(错误没有显示它们发生在哪个文件中)
  • 第一次尝试是在文件中查找

标签: c++ visual-studio visual-studio-2012 compiler-errors visual-studio-2015


【解决方案1】:

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

更多信息Visual Studio Connect

也许可以在文件中为“

【讨论】:

  • 如果是这种情况,我不应该在我的代码中而不是在这个文件中得到错误吗?
  • @user3713929 不一定。模板很复杂,很多时候使用 C++ 时,错误会显示在模板内部而不是我们的代码中,即使错误在我们的代码中也是如此。
  • 如果是这样,我该如何调试它?这是我和另外 4 个人一起工作的一个项目,他们都使用 Xcode。它已经持续了一年半多。询问每个人是否曾经在任何文件中做过类似的事情......有点困难(还值得一提的是它可以在 xcode 中正确编译)
  • @user3713929 在这种情况下,它有点令人困惑且难以找到,除非您在容器内找到任何 const/references。
  • 非常感谢!做到了。我对 C++ 不太熟悉,所以我不太确定如何搜索它。它最终成为两个长常量列表!非常感谢你的解释真的很有帮助,它不仅帮助我解决了这个问题,而且也理解了它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-08-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-08
  • 1970-01-01
  • 2015-01-25
相关资源
最近更新 更多