When the advertised behavior of the derived class is substitutable for that of the base class.
Proper inheritance and substitutable behavior can be guaranteed when the specifications of the member functions of the derived class require no more and promise no less than the specifications of the corresponding member functions in the base class(es). The derived class can also add new member functions. The specification for these new member functions can require as much or promise as little as they like, since they are not constrained by existing member functions in any base class.
In the following example, the specification for
Derived::f() requires no more (in fact, it imposes ...