当std :: vector重新分配其内存数组时,是复制构造函数还是移动构造函数?

duo*_*gja 1 c++ stl stdvector c++11

当std :: vector重新分配其内存数组时,使用什么样的复制/移动构造函数将元素复制/移动到新房子?

M.M*_*M.M 5

如果move-constructor存在,noexcept则使用它.否则使用复制构造函数.

使用可能抛出的move-constructor是不可取的,因为可能会发生某些对象被移动到新存储,然后异常会阻止其他对象被移动.

cppreference.com网站确实说如果对象是不可复制的,但是有一个非noexcept移动构造函数,那么它将使用该移动构造函数,如果抛出异常则带有"未指定的行为".我猜这意味着元素可能会从向量中丢失.