-6

我一直在将我的代码从 Visual Studio 2017 移植到 Visual Studio 2019。它之前可以正常构建。但现在我收到这些错误:

C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\VC\Tools\MSVC\14.20.27508\include\list(1010): error C2280: 'std::pair<_Kty,_Ty> &std::pair<_Kty,_Ty>::operator =(volatile const std::pair<_Kty,_Ty> &)': attempting to reference a deleted function        178 114
C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\VC\Tools\MSVC\14.20.27508\include\list(1010): error C2280: 'std::pair<_Kty,_Ty> &std::pair<_Kty,_Ty>::operator =(volatile const std::pair<_Kty,_Ty> &)': attempting to reference a deleted function        54  114

这些错误与我的代码中的行无关,所以我看不到我写的可能导致它们的内容。并且此代码在早期版本的工具中构建时没有错误。

以下是失败构建的项目属性:

https://imgur.com/a/WnjmKRa

注意:大多数项目都很好。

Windows SDK 版本设置为7.0并将平台工具集设置为Visual Studio 2017 - Windows XP (v141_xp)成功构建相同的项目。快照显示该项目使用 Windows SDK 版本 7 和工具集 v141_xp 构建良好

我知道我的代码在某处存在问题,但在属于我正在构建的项目的任何代码中都没有显示任何错误,它只是在list标题中显示错误。

我想找到导致此构建失败的罪魁祸首代码。什么情况下list会给我这些错误?

为什么它使用 Windows SDK 7 和 v141_xp 工具集构建良好,而不是升级的 SDK 和工具集?

4

1 回答 1

1

您的项目属性可能是一个红鲱鱼。

错误在于该类型std::pair<_Kty,_Ty>具有已删除的复制赋值运算符,如果显式定义了它的各种其他构造函数或赋值运算符,或者显式删除了复制赋值运算符,则可能发生这种情况。虽然std::list 自 c++11 以来不需要 T 是可复制分配的,但您或许应该仔细检查std::list您在程序中使用的 s ,看看您是否可以确保它不是那些领先的到这个错误。

为了获得更好的帮助,您需要发布MCVE

(长评论转换为答案)

于 2019-04-05T06:40:44.497 回答