来自VC++小组的VS2010 Beta 1常见问题报告(1)

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

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下,include﹤algorithm﹥顺带的就包括了﹤iterator﹥,但在VC10 Beta 1下需要单独写明。

问题 2: error C2664: 'std::vector﹤_Ty﹥::_Inside' : cannot convert parameter 1 from 'IUnknown **' to 'const ATL::CComPtr﹤T﹥ *'

解决方法:使用CAdapt

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

解 决方法就是使用﹤atlcomcli.h﹥的CAdapt。……

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

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

 

问题4:Specializing stdext::hash_compare

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

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

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值