Following this question, I\'m wondering why a struct\\class in C++ has to have a virtual method in order to be polymorphic.
Forcing a virtual destructor makes sense,
Because it is defined as such in the standard.
From 10.3/1 [class.virtual]
Virtual functions support dynamic binding and object-oriented programming. A class that declares or inherits a virtual function is called a polymorphic class.
It makes sense that if you use inheritance, then you have at least one virtual method. If you don't have any virtual method, then you could use composition instead.