It is a commonly held belief that the the C++ Standard library is not generally intended to be extended using inheritance. Certainly, I (and others) have criticised people who suggest deriving from classes such as std::vector. However, this question: http://stackoverflow.com/questions/1038482/c-exceptions-can-what-be-null made me realise that there is at least one part of the Standard Library that is intended to be so extended - std::exception.
So, my question has two parts:
a) Are there any other Standard Library classes which are intended to be derived from?
b) If one does derive from a Standard Library class such as std::exception, is one bound by the interface described in the ISO Standard? For example, would a program which used an exception class who's what() member function did not return a NTBS (say it returned a null pointer) be standard conforming?
Thanks for all the replies. I'm still not entirely sure that question (b) has been definitively covered, but I'm accepting D.Shawley's comprehensive and sensible answer.
Edit: This edit is to make the question appear on the SO front page again so that people can be encouraged to upvote Roger Pate's excellent answer, that I somehow missed when he first posted it.