"Must" is stronger than "should". Stroustrup states in his answer to the FAQ Why are destructors not virtual by default?: "So when should I declare a destructor virtual? Whenever the class has at least one virtual function."But in my view of sense, that almost means the same as must. Should or must, they both imply that if the class has virtual functions it needs a virtual destructor. Perhaps should is too strong a word?
It is a corollary of the rule "do not publicly inherit from standard containers". It is not a rule specified by the standard, but one specified by best practice.It sounded like it's a rule you need to follow.