Ответ 1
Как я сказал один раз перед:
Итак, каковы все эти тривиальные и нетривиальные вещи?
Конструктор копирования/перемещения для класса X тривиален, если он не предоставляется пользователем и если
- класс X не имеет виртуальных функций (10.3) и виртуальных базовых классов (10.1) и
- конструктор, выбранный для копирования/перемещения каждого подобъекта прямого базового класса, тривиален и
- для каждого нестатического элемента данных X, относящегося к типу класса (или его массиву), конструктор выбранный для копирования/перемещения этого элемента тривиально,
в противном случае конструктор copy/move не является тривиальным.
В основном это означает, что конструктор копирования или перемещения тривиален, если он не предоставляется пользователям, класс не имеет ничего виртуального в нем, и это свойство выполняется рекурсивно для всех членов класса и для базовый класс.