Visual studio 2008 VS2008->;VS2010导致隐秘的STL错误 在VS2008 中成功编译了以下C++库

Visual studio 2008 VS2008->;VS2010导致隐秘的STL错误 在VS2008 中成功编译了以下C++库,visual-studio-2008,visual-studio-2010,stl,Visual Studio 2008,Visual Studio 2010,Stl,当我在VS2010中打开它时,它在转换向导过程中没有任何错误 现在,当我尝试在VS2010中编译它时,我得到一些奇怪的STL错误,如下所示: 1>TimXmlRpc.cpp(1018): error C2039: 'back_insert_iterator' : is not a member of 'std' 1>TimXmlRpc.cpp(1018): error C2065: 'back_insert_iterator' : undeclared identifier 1>

当我在VS2010中打开它时,它在转换向导过程中没有任何错误

现在,当我尝试在VS2010中编译它时,我得到一些奇怪的STL错误,如下所示:

1>TimXmlRpc.cpp(1018): error C2039: 'back_insert_iterator' : is not a member of 'std'
1>TimXmlRpc.cpp(1018): error C2065: 'back_insert_iterator' : undeclared identifier
1>TimXmlRpc.cpp(1018): error C2275: 'XmlRpcValue::BinaryData' : illegal use of this type as an expression
1>TimXmlRpc.cpp(1018): error C2065: 'ins' : undeclared identifier
1>TimXmlRpc.cpp(1018): error C2039: 'back_inserter' : is not a member of 'std'
1>TimXmlRpc.cpp(1018): error C3861: 'back_inserter': identifier not found
1>TimXmlRpc.cpp(1019): error C2065: 'ins' : undeclared identifier
1>TimXmlRpc.cpp(1031): error C2039: 'back_insert_iterator' : is not a member of 'std'
1>TimXmlRpc.cpp(1031): error C2065: 'back_insert_iterator' : undeclared identifier
1>TimXmlRpc.cpp(1031): error C2275: 'std::vector<_Ty>' : illegal use of this type as an expression
1>          with
1>          [
1>              _Ty=char
1>          ]
1>TimXmlRpc.cpp(1031): error C2065: 'ins' : undeclared identifier
1>TimXmlRpc.cpp(1031): error C2039: 'back_inserter' : is not a member of 'std'
1>TimXmlRpc.cpp(1031): error C3861: 'back_inserter': identifier not found
1>TimXmlRpc.cpp(1032): error C2065: 'ins' : undeclared identifier
如果有人能给我一些指导,我将不胜感激。对C++来说,我已经很难理解这个问题了。

你可能忘记了<代码>包含了一些文件中的< /代码>。这就是像
back\u insert\u iterator
这样的东西被声明的地方

在过去,您可以忘记该头文件,因为许多其他标准头文件也包含它。VS2010重新组织了其库实现的头文件,使其更符合标准。因此,它对缺少的标题的宽容程度要低得多,而
是一个经常被忽视的标题。

来自MSDN:

许多其他头文件不再自动包含该头文件。相反,如果需要对标头中定义的独立迭代器的支持,请显式包含该标头


我很高兴微软团队正在收紧STL库。我必须对我们产品的SDK做这样的修改,我们必须引入许多像这样的突破性更改。但这一切都是为了好。
std::back_insert_iterator<BinaryData> ins = std::back_inserter(*(u.asBinary));