1#include <utility>23structA4{5voidf() &&{ }6};78voidg(A &&a)9{10a.f();//error, a是左值11std::move(a).f();//fine12}1314intmain() {return0; } 其实有了右值表示临时对象这一观察结果,变量是左值这一特性并不令人惊讶。毕竟,变量是持久的,直到离开作用域时才被销毁。(《C++ Primer》)...
例如:_mapTransportInfos.insert(std::make_pair<uint32, CTransportInfoPtr>(iter_t->m_nID, pinfo)); 这句代码在vs2012的c++11就无法编译,报2664错误。可以用如下强制转换来实现: 第一种方法(我这没成功) _mapTransportInfos.insert(std::make_pair<uint32, CTransportInfoPtr>(static_cast<uint32&&>(it...
如果make_pair用在了insert中,建议直接构造一个pair对象,然后再insert. 比较通用的方法是是static_cast强转成右值引用。 例如:_mapTransportInfos.insert(std::make_pair<uint32, CTransportInfoPtr>(iter_t->m_nID, pinfo)); 这句代码在vs2012的c++11就无法编译,报2664错误。可以用如下强制转换来实现: _mapT...
如果make_pair用在了insert中,建议直接构造一个pair对象,然后再insert. 比较通用的方法是是static_cast强转成右值引用。 例如:_mapTransportInfos.insert(std::make_pair<uint32, CTransportInfoPtr>(iter_t->m_nID, pinfo)); 这句代码在vs2012的c++11就无法编译,报2664错误。可以用如下强制转换来实现: _mapT...