I would say that anyone not trying to do something screwy by intent (hacking, being silly, demo-ing a bad idea, etc) would not be at risk of calling a destructor directly. I would leave it alone. If it does not do anything, take it out, the compiler will generate what you need.
what exactly do you want?
pure enums are really just grouped named constant integers. That is all they are, and that is all they can do.
you can enum/array combo cleanly:
enum {one,two,three,max_e};
object foo[max_e]; //if you add four to the enum before max_e, this self corrects on recompile!
foo[three] = value; //named locations are handy at times, eg cars[jaguar] = fast;
https://www.geeksforgeeks.org/enum-classes-in-c-and-their-advantage-over-enum-datatype/
From what I know of them (I have not found a use or need for one yet) enum class adds type safety which is as often an aggravation (possibly a legacy code issue, but often coders cram int to enum and reverse, ignoring the type. Old/bad habits? I know I usually want the integer from it, and find the C enum more useful.) as it is a boon. Otherwise, its just like an enum (assuming that you would put all enums in a namespace, which you would do, to prevent name collisions).
From what I see so far either namespaced enum or enum class will do it, yes.
if you want a text / int lookup, eg if the user typed 'three' and you wanted the enum value back, a map is the way to go usually.