Does operator[] violate the principle?
The definitions are definitely different in the base and derived classes
However, they do the same thing when the lower bound is zero
A Vector has a lower bound of zero
So there is no problem here
Note: A base class does not have to substitute for a derived class