【发布时间】:2013-05-24 02:41:23
【问题描述】:
所以我真的很惊讶在这段代码中发现了这一点:
void AddLayer( shared_Layer_ptr && pNewLayer_p ){
m_layers.push_back( pNewLayer_p ); // *
}
被调用的 push_back 是“& param”,而不是“&& param”版本。 m_layers 是一个 std::vector。 由于 pNewLayer_p 是一个“&&”,我虽然它是一个该死的右值。我设法调用 push_back("&& param") 的唯一方法是使用 std::move:
m_layers.push_back( std::move(pNewLayer_p) );
对我来说似乎是多余的,因为 pNewLayer_p 已经是一个“&&”。我肯定错过了什么,它是什么?
【问题讨论】: