Interesting. Indeed, you're not supposed to derive from most STL classes, but I see your point... a derived class with iterators whose base class already implements an output operator. Hm, well, I guess I'm not too worried about that, but perhaps there's some is_base-typetrait magic that could detect such cases? For that matter, is there a typetrait that checks whether a particular member function exists?