nic*_*yte 6 c++ move-semantics
以下表达式的结果是否定义明确?它是什么?
hash_map[object.key()] = std::move(object);
我不确定std::move零件的影响是否会在零件之前或之后发生object.key(),因此我的问题.
它定义得很好,因为这段代码中的第一个并不重要:您可以将其重写为以下等价物
hash_map[object.key()] = static_cast<objecttype&&>(object);
Run Code Online (Sandbox Code Playgroud)
我们可以对代码说些什么:
object.key() 应该在分配到地图之前执行std::move(object) 应该在分配到地图之前执行然后将对地图进行赋值,该函数将接受xvalued object以及key函数所做的任何更改.