Вам нужно go дальше по кроличьей норе. На странице cppreference сказано, что тривиальные типы должны быть TriviallyCopyable . Если вы посещаете эту страницу, значит, ей нужен
Тривиальный неразрушенный деструктор
, и если мы перейдем по этой ссылке, у нас будет
Тривиальный деструктор
Деструктор для класса T тривиален, если выполняется все следующее:
- Деструктор не предоставлен пользователем (то есть, он либо неявно объявлен, либо явно определен как дефолтный в его первом объявлении)
- Деструктор не является виртуальным (то есть деструктор базового класса не является виртуальным)
- Все прямые базовые классы имеют тривиальные деструкторы
- Все нестатические c члены данных типа класса (или массива типа класса) имеют тривиальные деструкторы
Тривиальный деструктор - это деструктор, который не выполняет никаких действий. Объекты с тривиальными деструкторами не требуют выражения удаления и могут быть удалены простым освобождением их хранилища. Все типы данных, совместимые с языком C (типы POD), являются тривиально разрушаемыми.
Так что, да, ему нужен тривиальный деструктор, и ваш пользователь, если пустой, не считается тривиальным.
Единственный способ «написать» деструктор и считать его тривиальным - это использовать
~ClassName() = default;