【发布时间】:2019-12-09 11:29:20
【问题描述】:
正如 cppreference.com 所说,
地图通常被实现为红黑树。
所以移动std::map 只是将指针移动到根node + 其他信息,例如大小。为什么std::map的移动构造函数没有标记为noexcept?
【问题讨论】:
-
有一个重载需要一个分配器参数。这大概需要分配新节点并移动构造内容,因此分配可能会失败。不过,这并不能解释另一个重载,因为分配器本身应该是可移动构造的。
-
不是 Why aren't container move assignment operators noexcept? 的重复项,因为移动构造函数与移动赋值运算符不同。此外,这两个不同特殊成员的答案是不同。
标签: c++ move-semantics