IMHO, I don't find any harm in inheriting STL containers if they are used as functionality extensions. (That's why I asked this question. :) )
The potential problem can occur when you try to pass the pointer/reference of your custom container to a standard container.
template
struct MyVector : std::vector {};
std::vector* p = new MyVector;
//....
delete p; // oops "Undefined Behavior"; as vector::~vector() is not 'virtual'
Such problems can be avoided consciously, provided good programming practice is followed.
If I want to take extreme care then I can go upto this:
#include
template
struct MyVector : std::vector {};
#define vector DONT_USE
Which will disallow using vector
entirely.