Конструктор перемещения для класса X неявно объявляется как значение по умолчанию именно тогда, когда
- X не имеет объявленного пользователем конструктора копирования,
- X не имеетпользовательский оператор назначения копирования,
- X не имеет оператора назначения перемещения, объявленного пользователем,
- X не имеет деструктора, объявленного пользователем, и
- Конструктор перемещения не будет неявно определен как удаленный.
Так, например, если в вашем классе есть член данных типа класса, у которого нет конструктора перемещения, ваш класс не получит перемещениеконструктор, даже если у него нет объявленного конструктора копирования / перемещения, поскольку неявно объявленный конструктор перемещения будет определен как удаленный (из-за этого члена данных).