所以我真的很惊讶地发现在这段代码中:
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 已经是一个“&&”。我肯定错过了一些东西,它是什么?