当std :: vector重新分配其内存数组时,使用什么样的复制/移动构造函数将元素复制/移动到新房子?
答案 0 :(得分:5)
如果move-constructor存在且是noexcept
则使用它。否则使用复制构造函数。
使用可能抛出的move-constructor是不可取的,因为某些对象可能会移动到新存储,然后异常会阻止其他对象被移动。
cppreference.com网站确实说如果对象是不可复制的,但是有一个非noexcept移动构造函数,那么它将使用该移动构造函数,如果抛出异常则带有“未指定的行为”。我猜这意味着元素可能会从向量中丢失。