desctrutor virtual na classe base abstrata pura

eu tenho

struct IMyInterface
{
   virtual method1() = 0;
   virtual method2() = 0;
};

O GCC insiste que eu tenho

struct IMyInterface
{
   virtual method1() = 0;
   virtual method2() = 0;
   virtual ~IMyInterface(){};
};

Eu não vejo o porquê. Uma interface pura é tudo sobre a interface (duh). O destruidor faz parte dos detalhes de implementação interna de um implementador concreto da interface; não faz parte da interface. Entendo toda a questão da fatia (ou pelo menos acho que sim)

Então, minha pergunta é - o GCC está certo em insistir nisso? Em caso afirmativo, por quê?

questionAnswers(2)

yourAnswerToTheQuestion