Ответ 1
Да, из проекта С++ 11, 12.8:
Если определение класса X явно не объявляет конструктор перемещения, он будет объявлен неявным образом как по умолчанию, если и только если
- X не имеет объявленного пользователем конструктора копирования,
- X не имеет объявленного пользователем оператора копирования копий,
- X не имеет объявленного пользователем оператора назначения перемещения,
- X не имеет объявленного пользователем деструктора и
- конструктор перемещения не будет неявно определен как удаленный.
Последнее условие указано более подробно позже:
Неявно объявленный конструктор copy/move является встроенным публичным членом своего класса. По умолчанию конструктор копирования/перемещения для класса X определяется как удаленный (8.4.3), если X имеет:
- вариантный член с нетривиальным соответствующим конструктором, а X - класс объединения,
- нестатический элемент данных класса M (или его массив), который не может быть скопирован/перемещен, потому что (13.3), применительно к соответствующему конструктору Ms, приводит к двусмысленности или функция, которая удалена или недоступна из конструктора, установленного по умолчанию,
- прямой или виртуальный базовый класс B, который нельзя копировать/перемещать, поскольку разрешение перегрузки (13.3), как применяется к соответствующему конструктору Bs, приводит к двусмысленности или функции, которая удалена или недоступный из конструктора, установленного по умолчанию,
- любой прямой или виртуальный базовый класс или нестатический член данных типа с удаленным деструктором или недоступен из конструктора, установленного по умолчанию,
- для конструктора копирования, нестатического элемента данных ссылочного типа rvalue или
- для конструктора перемещения, нестатического элемента данных или прямого или виртуального базового класса с типом, который не имеет конструктора перемещения и не может быть тривиально скопирован.
Проще говоря, конструктор перемещения будет объявлен неявно, если:
- В классе нет объявленных пользователем каких-либо других специальных функций-членов.
- Конструктор перемещения можно разумно реализовать, перемещая все его элементы и базы.
Ваш класс, очевидно, соответствует этим условиям.