如何找到导致C ++列表的罪魁祸首代码让我'尝试使用MSVC 14.20.27508引用已删除的函数'错误? [关闭]

问题描述 投票:-6回答:1

我一直在将我的代码从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并将Platform Toolset设置为Visual Studio 2017 - Windows XP(v141_xp),同一项目成功构建。 Snapshot showing that the project built fine with Windows SDK version 7 and Toolset v141_xp

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

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

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

c++ visual-studio stdlist visual-studio-2019 msvc14
1个回答
1
投票

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

错误是类型std::pair<_Kty,_Ty>具有已删除的复制赋值运算符,如果显式定义了其他各种构造函数或赋值运算符,或者显式删除了复制赋值运算符,则可能会发生这种情况。虽然std::list does not require T to be copy-assignable since c++11,你应该仔细检查你在程序中使用的std::lists,看看你是否可以确定它不是导致这个错误的那些。

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

(长评论转换成答案)

© www.soinside.com 2019 - 2024. All rights reserved.