我一直在将我的代码从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
这些错误不是指我代码中的行,所以我看不出我写的可能会导致它们的内容。并且此代码在早期版本的工具中构建时没有错误。
以下是失败构建的项目属性:
注意:大多数项目都很好。
将Windows SDK版本设置为7.0并将Platform Toolset设置为Visual Studio 2017 - Windows XP(v141_xp),同一项目成功构建。
我知道我的代码中存在一个问题,但是它没有在属于我正在构建的项目的任何代码中显示任何错误,它只显示list
头中的错误。
我想找到导致此构建失败的罪魁祸首代码。什么情况会让list
给我这些错误?
为什么使用Windows SDK 7和v141_xp工具集可以很好地构建它,而不是使用升级的SDK和工具集?
您的项目属性可能是红鲱鱼。
错误是类型std::pair<_Kty,_Ty>
具有已删除的复制赋值运算符,如果显式定义了其他各种构造函数或赋值运算符,或者显式删除了复制赋值运算符,则可能会发生这种情况。虽然std::list does not require T to be copy-assignable since c++11,你应该仔细检查你在程序中使用的std::list
s,看看你是否可以确定它不是导致这个错误的那些。
要获得更好的帮助,您需要发布MCVE。
(长评论转换成答案)