Является ли конструктор Move по умолчанию неопределенным?

Кажется, что вектор будет проверять, если конструктор перемещения помечен как noexcept, прежде чем принимать решение о перемещении или копировании элементов при перераспределении. Является ли конструктор перемещения по умолчанию как noexcept? Я видел следующую документацию, но она не указала это. http://en.cppreference.com/w/cpp/language/move_constructor

Неявно объявленный конструктор перемещения

Если пользовательский ход не задан конструкторы предоставляются для типа класса (struct, class или union), и все следующее верно: нет пользовательской копии конструкторов нет пользовательских операторов присваивания копий нет пользовательских операторов присваивания операторов, нет объявленные пользователем деструкторы, неявно объявленный конструктор перемещения не определены как удаленные из-за условий, описанных в следующем разделе то компилятор объявит конструктор перемещения как встроенную публикацию член его класса с подписью T:: T (T & &). Класс может иметь многопозиционные конструкторы, например. как T:: T (const T &), так и T:: T (T & &). Если имеются определенные пользовательские конструкторы перемещения, пользователь может все еще принудительно генерирует неявно объявленный конструктор перемещения с ключевое слово default.

Ответ 1

Я думаю, что ответ 15.4/14 (Исключения):

Конструктор наследования (12.9) и неявно объявленная специальная функция-член (раздел 12) имеют спецификацию исключения. Если f - наследующий конструктор или неявно объявленный конструктор по умолчанию, конструктор копирования, конструктор переместить конструктор, деструктор, оператор присваивания копии или оператор переадресации, его неявная спецификация исключений указывает тип-id T тогда и только тогда, когда T разрешено спецификацией исключения функции, непосредственно вызываемой неявным определением f s; f разрешает все исключения, если какая-либо функция, которую он вызывает напрямую, разрешает все исключения, а f имеет спецификацию исключения noexcept(true), если каждая функция, которую он вызывает напрямую, не содержит исключений.

В основном, он делает то, что вы думаете, и конструктор с неявным объявлением перемещается noexcept всякий раз, когда это возможно.