在同一赋值表达式中使用std::move(object)和object.method()

Using std::move(object) and object.method() in the same assignment expression.

本文关键字:object method move std 赋值 表达式      更新时间:2023-10-16

以下表达式的结果是否定义良好?它是什么?

hash_map[object.key()] = std::move(object);

我不确定std::move部分的效果是发生在object.key()部分之前还是之后,因此我提出了问题。

它定义得很好,因为这段代码中先出现的内容并不重要:您可以将它重写为以下等效的

hash_map[object.key()] = static_cast<objecttype&&>(object);

我们能对代码说些什么:

  1. object.key()应在分配到映射之前执行
  2. std::move(object)应在分配到映射之前执行

然后将对映射进行赋值,该映射将接受具有key函数所做的任何更改的x值object

相关文章: