在同一赋值表达式中使用 std::move(object) 和 object.method()。
Using std::move(object) and object.method() in the same assignment expression.
下面表达式的结果是否定义明确?这是什么?
hash_map[object.key()] = std::move(object);
我不确定 std::move
部分的效果是在 object.key()
部分之前还是之后发生,因此我的问题。
它的定义很明确,因为这段代码中的第一个并不重要:您可以将其重写为以下等价物
hash_map[object.key()] = static_cast<objecttype&&>(object);
关于代码我们能说些什么:
object.key()
应该在分配给 map 之前执行
std::move(object)
应该在分配给 map 之前执行
然后将分配给地图,它将接受 xvalued object
以及 key
函数所做的任何更改。
下面表达式的结果是否定义明确?这是什么?
hash_map[object.key()] = std::move(object);
我不确定 std::move
部分的效果是在 object.key()
部分之前还是之后发生,因此我的问题。
它的定义很明确,因为这段代码中的第一个并不重要:您可以将其重写为以下等价物
hash_map[object.key()] = static_cast<objecttype&&>(object);
关于代码我们能说些什么:
object.key()
应该在分配给 map 之前执行
std::move(object)
应该在分配给 map 之前执行
然后将分配给地图,它将接受 xvalued object
以及 key
函数所做的任何更改。