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.