Вдохновленный сообщением Почему деструктор отключает генерацию неявных методов перемещения?, мне было интересно, верно ли это для виртуального деструктора по умолчанию, например
class WidgetBase // Base class of all widgets
{
public:
virtual ~WidgetBase() = default;
// ...
};
Поскольку класс предназначен для базового класса иерархии виджета, я должен определить его виртуальный деструктор, чтобы избежать утечек памяти и поведения undefined при работе с указателями базового класса. С другой стороны, я не хочу, чтобы компилятор автоматически генерировал операции перемещения.
Предоставляет ли виртуальный деструктор по умолчанию предотвращение операций перемещения сгенерированных компилятором?