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,
Classes only need virtual methods in order to be dynamically polymorphic - for the reasons described by others. You can still have static polymorphism through templates, though.