VS2010 -- 'back_inserter': identifier not found

Visual Studio 2010中的VC++C++0x提供了很多支持,很多标准也与C++0x接轨。这样做的好处是很多的,但同时也会导致以前一些不符合C++0x规范的代码无法像原来那样工作。

问题:error C3861: 'back_inserter': identifier not found

解决方法:#include iterator

问题在于,back_inserter()在没有include iterator的情况下被使用。C++标准库的headers会通过某种未定义的方式将其他headers包括进来。……VC9 SP1下,includealgorithm顺带的就包括了﹤iterator,但在VC10 Beta 1下需要单独写明。

问题2: error C2664: 'std::vector_Ty::_Inside' : cannot convert parameter 1 from 'IUnknown **' to 'const ATL::CComPtrT *'

解决方法:使用CAdapt

标准容器禁止其元素将运算符的address-of过载。CComPtr将运算符的address-of过载,导致 vectorCComPtrT﹥﹥被禁止。这是因为,在VC9 SP1中,vector并在push_back()中使用不使用运算符的address-of,但在VC10 Beta 1中是使用的。

解决方法就是使用﹤atlcomcli.hCAdapt。……

问题3: error C2662: 'NamedNumber::change_name' : cannot convert 'this' pointer from 'const NamedNumber' to 'NamedNumber &'

解决方法:Respect set Immutability (尊重set的不变性)

问题4Specializing stdext::hash_compare

(如果你为你的type使用非标准话的 hash_set或﹤hash_map,以及特别的stdext::hash_compare,那你会发现这里没法儿用了,因为它们被移到了命名空间下。 ……

解决方法:使用 unordered_set 或﹤unordered_map

转自:http://developer.51cto.com/art/200905/125567.htm

源文档 <http://blog.163.com/yabin99@126/blog/static/134293362201031844410150/>

你可能感兴趣的:(insert)