В С++ 11 мы можем объявить деструктор автоматически сгенерированным:
struct X {
virtual ~X() = default;
};
Кроме того, мы можем объявить деструктор чистым виртуальным:
struct X {
virtual ~X() = 0;
};
Мой вопрос: как объявить деструктор как автоматически сгенерированным, так и чистым виртуальным? Похоже, что следующий синтаксис неверен:
struct X {
virtual ~X() = 0 = default;
};
Ни один из них:
struct X {
virtual ~X() = 0, default;
};
И это одно:
struct X {
virtual ~X() = 0 default;
};
EDIT:
Некоторые разъяснения в отношении вопроса. В принципе, я хочу, чтобы пустой класс был неинтересным базовым классом, но производный класс является реальным, тогда класс должен иметь чистый виртуальный деструктор. Но, с другой стороны, я не хочу предоставлять определение в файле .cpp. Поэтому мне нужен какой-то механизм, эквивалентный default
. Интересно, есть ли у кого-нибудь идея решить проблему.