Default pure virtual destructor

Viewed 9083

In C++11, we are able to declare a destructor to be auto generated:

struct X {
  virtual ~X() = default;
};

Also, we can declare a destructor to be pure virtual:

struct X {
  virtual ~X() = 0;
};

My question is: how to declare the destructor to be both auto generated and pure virtual? Looks like the following syntax is not correct:

struct X {
  virtual ~X() = 0 = default;
};

Neither is this one:

struct X {
  virtual ~X() = 0, default;
};

Nor this one:

struct X {
  virtual ~X() = 0 default;
};

EDIT: Some clarification on the purpose of the question. Basically I want an empty class to be non-instantiable base class, but derived class is instantiable, then the class must have a pure virtual destructor. But on the other hand, I don't want to provide the definition in a .cpp file. So I need some sort of mechanism equivalent to default. I wonder if anyone has an idea to solve the problem.

1 Answers
Related